我试图从文本文件中读取整数并将它们存储到数组中。文本文件为:
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);
}
答案 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)
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);
}
}