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

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);
    }
6个回答

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

为了让这个工作正常,您需要在导入中添加此内容。


更简单的方式是 System.out.println(Arrays.toString(integers)); - akuhn
1
完全正确的@akuhn,但我想演示发生了什么。 - Randall Hunt

3
很遗憾,Java的设计者们忘记为数组添加适当的字符串表示形式。相反,请使用以下方法:
System.out.println(Arrays.toString(integers));

你需要import java.util.Arrays;才能使其正常工作。

2

改为这样

System.out.println(integers);

试一下这个

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

你需要打印出 integers[] 数组中的实际值,而不是数组本身。

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]

0
无论何时你将任何对象传递给 System.out.println(),它都会打印该对象的 toString()。如果没有重写,它会打印该对象的内存地址。
System.out.println(integers);

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

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


0

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

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

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接