[英]Reading ints from a txt file and storing to an array
我試圖從文本文件中讀取整數並將它們存儲到數組中。 文本文件如下:
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);
}
您正在打印出數組的虛擬內存地址而不是實際的數組項:
您可以逐個打印出實際的數組項,如下所示:
// 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
在你的導入中為此工作。
不幸的是,Java的設計者錯過了為數組添加正確的字符串表示。
而是使用
System.out.println(Arrays.toString(integers));
你需要import java.util.Arrays;
使這項工作。
而不是這個
System.out.println(integers);
嘗試這個
System.out.println(integers[0] + " : " + integers[1]);
你需要在integers[]
數組中打印實際值而不是數組本身
如果使用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]
每當您將任何對象傳遞給System.out.println()時,它都會打印該對象的toString()。 如果未覆蓋,則打印該對象的內存地址。
System.out.println(integers);
正在嘗試打印整數數組的toString()表示,它只是該數組的JVM地址。
要打印數組中的實際數字,您需要遍歷數組或將數組轉換為java.util.ArrayList
。(實現了toString()
方法。)
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.