我正在尝试从用户那里获取输入,然后如果它与现有文件之一匹配,则读取该文件并将单词、字母或数字放入一个数组中。 “单词”和“字母”文件似乎工作正常,但“数字”给我带来了问题。它找到文件,读取它,将它放入一个数组中,并给出数字的总和;然而,数组的输出是每隔一个数字,而不是所有数字,就像它应该做的那样。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class fileIO
{
public static void main (String[] args) throws FileNotFoundException
{
String filename;
System.out.println("Please enter name of file (alphabet,words,numbers): ");
Scanner input = new Scanner(System.in);
filename = input.nextLine();
if(filename.equals("numbers"))
{
int sum = 0;
Scanner reader = new Scanner(new File("/home/ninjew/workspace/FileIO/src/" + filename + ".txt"));
ArrayList<Integer> arr = new ArrayList<Integer>();
while(reader.hasNext())
{
arr.add(reader.nextInt());
sum = sum + reader.nextInt();
}
System.out.println(arr);
System.out.println("The summation is: " + sum);
reader.close();
}
else if(filename.equals("words") || filename.equals("alphabet"))
{
Scanner reader = new Scanner(new File("/home/ninjew/workspace/FileIO/src/" + filename + ".txt"));
// This is for words and letters within the file. Print words and letters.
ArrayList<String> arr = new ArrayList<String>();
while(reader.hasNext())
{
String line = reader.next();
Scanner scanner = new Scanner(line);
scanner.useDelimiter(",");
while(scanner.hasNext()){
arr.add(scanner.next());
}
scanner.close();
}
System.out.println(arr);
reader.close();
}
}
}
最佳答案
在 if(filename.equals("numbers"))
中,您正在对该 block 中的文件进行两次读取,这就是它跳过数字的原因
while(reader.hasNext())
{
arr.add(reader.nextInt());
sum = sum + reader.nextInt();
}
应该是
while(reader.hasNext())
{
int val = reader.nextInt();
arr.add(val);
sum = sum + val;
}
关于java - 将文件读入数组返回错误的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464730/