2016-12-07 11 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は整数のみを使用して変数の型であるということです:long型、ダブルス、山車、および他の数値変数のタイプは受け入れます小数点以下はintではありません。

+0

私の問題は解決しましたが、 'a'が長いデータ型の場合、どうなるのでしょうか? –

+0

私は分かりません。変数aがlong型の場合、それが意味するものなら、整数または整数を表す変数にキャストする必要があります。あなたのコードでは、長いデータ型として "a"がありました。 "a"を長くしておくと、ランタイムエラーが発生する可能性があります。スキャナーに小数点以下の数字が含まれる可能性があるからです。うまくいけばそれは理にかなっていますか – BTM

0

ただ、このように変更し、長い変数の初期化は、ために長整数

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

も初期化であることを指定するLで終わる必要がありますintよりキャストlong

+0

ヤ。,,,私の問題は解決しました。手伝ってくれてありがとう。 –

0

私は問題がキーボードから値を読み取るときだと思う。 1.0 か::このように、長い形式で値を追加するには、キーボードでのように、あなたはロング読んでみてください。ここ

long a=in.nextLong(); 

配列の宣言で https://stackoverflow.com/a/6834049/5877109

0

longを使用すると、配列のサイズを設定できます。そして、あなたがそれを歩いているとき - インデックスのためにを使用してください。

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(); 
      } 
     } 
    } 
} 
関連する問題