FileReader myReader = new FileReader(myReaderRef);
Scanner input = new Scanner(myReader);
int arraySize = 0;
while(input.hasNextLine()){
arraySize++;
input.nextLine();
}
int[] numbers;
numbers = new int[arraySize];
while(input.hasNextLine()){
for(int i=0; i < numbers.length; i++){
numbers[i] = input.nextInt();
}
}
input.close();
System.out.print(numbers[1]);
}
}
并且正在读取的文本文件读取如下:
10
2
5
1
7
4
9
3
6
8
每当我使用system.out.print输出其中一个数组插槽时,无论我调用哪个数组位置,它都只给出0。我哪里错了?
编辑:我必须关闭并重新启动文件阅读器和扫描仪。谢谢你的帮助!
答案 0 :(得分:2)
您尝试阅读文件两次而不回到开头。第一次是计数行,第二次是读取数据。因为您不返回文件的开头,所以不会在任何地方加载/存储任何数据。所以你应该重新开始你的Scanner
,例如。关闭并重新开放。
或者您可能需要考虑使用ArrayList
,因此您只需要阅读一次文件。
List<Integer> numbers = new ArrayList<Integer>();
Scanner input = new Scanner(myReader);
while (input.hasNextLine()) {
numbers.add(input.nextInt());
input.nextLine(); // You might need this to get to the next line as nextInt() just reads the int token.
}
input.close()
答案 1 :(得分:1)
在计算行数后,您需要重新启动radio
(因为它位于Scanner
的末尾)。
File
答案 2 :(得分:0)
在你的第一个while循环游标中已经到了文件的最后一行。所以它在下一个循环之后无法找到任何东西。所以你必须创建2个Scanner
对象。
Scanner input = new Scanner(new File("D:\\numbers.txt"));
int arraySize =0;
while(input.hasNextLine()){
arraySize++;
input.nextLine();
}
int[] numbers;
numbers = new int[arraySize];
input.close();
Scanner input2 = new Scanner(new File("D:\\numbers.txt"));
while(input2.hasNextLine()){
for(int i=0; i < numbers.length; i++){
numbers[i] = input2.nextInt();
}
}
input2.close();
System.out.print(numbers[1]);
答案 3 :(得分:-1)
我试图尽可能地简化问题。
为您的案例添加/删除元素的最简单方法是使用ArrayList对象。阅读评论并运行项目。
下面的第一个整数列表是文件的原始输入。
第二个列表包含数组的打印语句。这些答案可能不是您希望将它们编入索引的地方,但我确信这会让您走上正确的道路:)
10
2
5
1
7
4
9
3
6
8
[10, 2, 5, 1, 7, 4, 9, 3, 6, 8]
3
1
7
5
2
8
package cs1410;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JFileChooser;
public class ArrayReader {
public static void main(String[] args) throws FileNotFoundException {
// Creates an array list
ArrayList<Integer> answer = new ArrayList<Integer>();
// Reads in information
JFileChooser chooser = new JFileChooser();
if (JFileChooser.APPROVE_OPTION != chooser.showOpenDialog(null)) {
return;
}
File file = chooser.getSelectedFile();
// Scan chosen document
Scanner s = new Scanner(file);
int count = 0;
// Scans each line and places the value into the array list
while (s.hasNextLine()) {
int input = s.nextInt();
answer.add(input);
}
// Kaboom
System.out.println(answer);
System.out.println(answer.indexOf(1));
System.out.println(answer.indexOf(2));
System.out.println(answer.indexOf(3));
System.out.println(answer.indexOf(4));
System.out.println(answer.indexOf(5));
System.out.println(answer.indexOf(6));
}
}