2016-12-07 156 views
1

我正在嘗試掃描一個matix,但我遇到了一些錯誤。 這裏是我的代碼:如何掃描java中long類型的int類型數字?

import java.io.*; 
import java.util.*; 

public class Solution { 

public static void main(String[] args) { 

    Scanner in=new Scanner(System.in); 

    long a=in.nextLong(); 


// ERROR: incompatible types: possible lossy conversion from long to int 


    long[][] b=new long[a][a]; 


    for(long i=0;i<a;i++){ 
     for(long j=0;j<a;j++) 
      { 
//same error here 

      b[i][j]=in.nextLong(); 
     } 
    } 
} 
} 

回答

0

在數組聲明,你要投INT到每個陣列尺寸大小:

 long[][] b = new long[(int) a][(int) a]; 

這樣做的原因是,int是僅使用整數變量類型:多頭,雙打,漂浮,以及其他數值的變量類型接受小數,而int不。

+0

我的問題解決了,但我有一個疑問,如果'一'是長數據類型,會發生什麼? –

+0

我不明白。如果變量a的類型是long,如果這就是你的意思,那麼你必須將它轉換爲一些代表整數或整數的變量。在你的代碼中,你有一個「a」作爲長數據類型。如果「a」長時間存在,則可能會出現運行時錯誤,因爲掃描器可能包含超過小數點的數字。希望這是有道理的? – BTM

0

就改成這樣,一個長變量應該有L結束的初始化,指定它是一個長整型

for(long i=0L;i<a;i++){ 
    for(long j=0L;j<a;j++) 

而且還初始化爲鑄造到intlong

+0

雅... ,,,我的問題解決了。感謝幫助。 –

0

我認爲問題是當你從鍵盤讀取一些價值。

long a=in.nextLong(); 

在這裏,你嘗試長看了那麼在你的鍵盤與長格式增加價值,就像這樣: 1.0 或: https://stackoverflow.com/a/6834049/5877109

0

使用int而不是long設置數組大小時。當你通過它 - 使用int索引

import java.io.*; 
import java.util.*; 

public class Solution { 

    public static void main(String[] args) { 

     Scanner in=new Scanner(System.in); 

     int a=in.nextInt(); 

     long[][] b=new long[a][a]; 


     for(int i=0;i<a;i++){ 
      for(int j=0;j<a;j++) 
      {  
       b[i][j]=in.nextLong(); 
      } 
     } 
    } 
}