4

テキスト ファイルから整数を読み取り、配列に格納しようとしています。テキストファイルは次のとおりです。

4
-9
-5
4
8
25
10
0
-1
4
3
-2
-1
10
8
5
8

それでも、コードを実行する[I@41616dd6と、コンソール ウィンドウが表示されます...

public static void main(String[] args) throws IOException
    {
        FileReader file = new FileReader("Integers.txt");
        int[] integers = new int [100];
        int i=0;
        try {
            Scanner input = new Scanner(file);
            while(input.hasNext())
            {
                integers[i] = input.nextInt();
                i++;
            }
            input.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        System.out.println(integers);
    }
4

6 に答える 6

5

実際の配列項目ではなく、配列の仮想メモリ アドレスを出力しています。

次のように、実際の配列項目を 1 つずつ出力できます。

// This construct is called a for-each loop
for(int item: integers) {
   System.out.println(item);
}

@akuhn は、Java にはこのためのヘルパーが組み込まれていることを正しく指摘しています。

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

以下を追加する必要があることに注意してください。

import java.util.Arrays

これが機能するためのインポートで。

于 2012-12-05T05:28:43.690 に答える
3

残念ながら、Java の設計者は、配列に適切な文字列表現を追加することを怠っていました。

代わりに使用

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

これを機能させる必要がありますimport java.util.Arrays;

于 2012-12-05T06:45:07.893 に答える
2

これの代わりに

System.out.println(integers);

これを試して

System.out.println(integers[0] + " : " + integers[1]);

integers[]配列自体ではなく、配列内の実際の値を出力する必要があります

于 2012-12-05T05:28:11.510 に答える
0

オブジェクトを System.out.println() に渡すと、そのオブジェクトの toString() が出力されます。オーバーライドされていない場合は、そのオブジェクトのメモリ アドレスを出力します。

System.out.println(integers);

この配列のJVMアドレスに過ぎない整数配列の toString() 表現を出力しようとしています。

配列内の実際の数値を出力するには、配列を反復処理するか、配列をjava.util.ArrayList. (toString()メソッドが実装されている)に変換する必要があります。

于 2012-12-05T07:01:32.913 に答える
0

これは、ファイルから整数を読み取り、配列に格納するのに役立ちます

java.util.Scanner をインポートします。

java.io.File をインポートします。

import java.util.ArrayList;

パブリッククラスのfiletoarray {

public static ArrayList<Integer> read(File f)
{
    ArrayList<Integer> array=new ArrayList<Integer>();
    try
    {
    
    Scanner sc=new Scanner(f);
    while(sc.hasNextLine())
    {
        array.add(sc.nextLine());
    }
    
    }
    catch(Exception e)
    {
        System.out.printf("ERROR : %s", e);
    }
    return array;
}
public static void main(String[] args) {
    File file1=new File("file1.txt");//your file path here
    ArrayList<Integer> array1;
    array1=read(file1);
    System.out.println(array1);
        
}

}

于 2014-02-26T18:17:32.377 に答える
0

int 配列の使用が制限ではない場合は、List を使用することをお勧めします。次のように使用できます。

 List<Integer> integers = new ArrayList<Integer>();
 Scanner input = new Scanner(file);
 while(input.hasNext()){
   integers.add(scanner.nextInt());
 }
 System.out.println(integers);

出力:[1,2,-1,23]

于 2012-12-05T05:41:02.450 に答える