从每行中的文本文件求和整数 - java

时间:2017-01-31 12:20:17

标签: java

我正在尝试读取文本文件并总结每行中的所有整数。 不幸的是,我似乎无法获得我想要的输出。

即。 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();
            };
        }

    }

1 个答案:

答案 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);
    }
}