我正在尝试读取文本文件并总结每行中的所有整数。 不幸的是,我似乎无法获得我想要的输出。
即。 1,2,3,4,5(第一行) 5,6(第二排) 2,3,4(第三排) 10(最后一行)
在这种情况下,我的输出应该是: 15 11 10 10
我的代码如下所示
import java.util.*;
import java.io.*;
public class FileReader {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Scanner fileReader = null;
try {
System.out.print("Enter filename> ");
String userInput = sc.nextLine();
File f = new File(userInput);
//Check if file exists
while(!f.exists()) {
System.out.println(userInput + " is invalid");
System.out.print("Enter filename> ");
userInput = sc.nextLine();
f = new File(userInput);
}
System.out.println("The file exists");
//If file exists, read input
int sum = 0;
fileReader = new Scanner(f);
fileReader.useDelimiter(",|\r\n"); //\r\n refers to enter
while(fileReader.hasNext()) {
String number = sc.next();
sum += Integer.parseInt(number);
System.out.println(sum);
if(fileReader.hasNextLine()) {
System.out.println(sum);
sum = 0;
}
}
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
finally {
fileReader.close();
};
}
}
答案 0 :(得分:0)
我更喜欢缓冲读卡器来读取文件。所以我给你写了一个解决方案。这将检查行中的每个字符是否为数字。如果是,它将被添加到总和
String line;
int sum;
try (BufferedReader reader = new BufferedReader(new FileReader(f))) {
while((line = reader.readLine()) != null){
sum=0;
for(int i=0;i<line.length();i++){
if(Character.isDigit(line.charAt(i))){
sum+=line.charAt(i);
}
}
System.out.println(sum);
}
}