-1

たとえば、ユーザーから入力整数を読み取ろうとしています

全体として 2 2 1 1 1 <

デバッガーでは、各整数を配置しますが、

結果の配列は、のようなもの[I@19eda2cが印刷されます。

public static void main(String[] args) {
int count=0;
int[] array = new int[10];
String input;
        Scanner scan = new Scanner(System.in);

System.out.println("Enter up to 10 integers: ");
while(scan.hasNextInt()){

array[count] = scan.nextInt();
count++;

}
System.out.println(array);

   }

}

forループまたはtoStringメソッドで印刷する必要があることを理解しました

しかし、コードを実行して気づいたのですが、

ユーザーが整数を入力しても、プログラムは私を待っています

私のスキャナーのロジスティクスは間違っていますか?

4

4 に答える 4

7

java.util.Arrays.toString()1D 配列のメソッド を使用する必要があります。

また

java.util.Arrays.deepToString()多次元配列用。

ユーザーが 12 個の数字を入力すると 12 個の整数が読み取られることを除けば、プログラムは問題ありません。入力にトークンがある限り、ループは 0 から 9 まで実行して 10 個の数字を読み取る必要があります

仕組みArrays.toString()は次のとおりです。

指定された配列の内容の文字列表現を返します。文字列表現は、角括弧 ("[]") で囲まれた配列の要素のリストで構成されます。隣接する要素は、文字 ", " (カンマの後にスペースが続く) で区切られます。要素は String.valueOf(int) によって文字列に変換されます

仕組みArrays.deepToString()は次のとおりです。

指定された配列の「深い内容」の文字列表現を返します。配列に要素として他の配列が含まれている場合、文字列表現にはそれらの内容などが含まれます。このメソッドは、多次元配列を文字列に変換するために設計されています。

詳細については、ドキュメントを参照してください: http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

于 2013-10-24T18:52:53.153 に答える
1
System.out.println(array); // prints value from default toString() method                 
                           // implementation (e.g. 'className + '@' + hashCode' in Java Oracle) 

次のようなものを使用する必要があります

System.out.println(Arrays.toString(array));   

値を出力します。

List代わりに使用することをお勧めしますarray

public static void main(String[] args) 
{
   List<Integer> array = new ArrayList<Integer>();
   String input;
   Scanner scan = new Scanner(System.in);
   while(scan.hasNextInt())
   {
      array.add(scan.nextInt());
   }
   System.out.println("Count=" + array.size());
   System.out.println(array);       
}
于 2013-10-24T18:53:05.097 に答える