从txt文件读取int并存储到数组

时间:2012-12-05 05:24:56

标签: java arrays file

我试图从文本文件中读取整数并将它们存储到数组中。文本文件为:

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);
    }

6 个答案:

答案 0 :(得分:5)

您打印出阵列的虚拟内存地址而不是实际的数组项:

您可以逐个打印出实际的数组项,如下所示:

// 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

在您的导入中为此工作。

答案 1 :(得分:3)

不幸的是,Java的设计人员错过了为数组添加正确的字符串表示。

改为使用

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

您需要import java.util.Arrays;才能完成这项工作。

答案 2 :(得分:2)

而不是

System.out.println(integers);

试试这个

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

您需要在integers[]数组中打印实际值而不是数组本身

答案 3 :(得分: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]

答案 4 :(得分:0)

每当您将任何对象传递给System.out.println()时,它都会打印该对象的toString()。如果未覆盖,则打印该对象的内存地址。

System.out.println(integers);

正在尝试打印整数数组的toString()表示形式,它只是该数组的JVM地址。

要打印数组中的实际数字,您需要遍历数组或将数组转换为java.util.ArrayList。(已实现toString()方法。)

答案 5 :(得分:0)

这应该可以帮助您从文件中读取Integer并将其存储在数组

import java.util.Scanner;

import java.io.File;

import java.util.ArrayList;

public class 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);

}

}