Java计数分配

时间:2018-07-09 05:17:18

标签: java file count

我正在尝试编写一个Java程序,其中计算从输入文件参加聚会的人数。该文件将始终采用这种格式,例如:

file format

用户将不知道输入格式中有多少行。该程序将返回有多少人参加聚会,有多少人没有参加聚会。以下是我当前的代码:

Current code

我希望我的输出像这个例子一样。

Desired output

但是,我遇到此错误。

Error

有什么办法可以解决此问题并改进代码以获得所需的格式?

2 个答案:

答案 0 :(得分:1)

您正在使用ScannerBufferedInputStream的混合物。只需选择一个并坚持下去即可。 或更妙的是-使用现代的Files#lines

Map<Boolean, Long> counts =
    Files.lines(Paths.get("partyResponses.txt"))
         .collect(Collectors.partitioningBy(s -> s.endsWith("yes"),
                                            Collectors.counting()));

System.out.printf("%d happy friends coming to the July 4th party!%n", counts.get(true);
System.out.printf("%d sad friends can't make it%n", counts.get(false);

答案 1 :(得分:0)

首先,您应该注意响应文件的目录:

enter image description here

此代码有效:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class PartyDemo {
    public static void main(String[] args){
        String filename = "responses.txt";
        int yesResponses = 0;
        int noResponses = 0;
        String line;
            try {
                BufferedReader bufferreader = new BufferedReader(new FileReader(filename));
                while ((line = bufferreader.readLine()) != null) {     
                    if(line.contains("no")){
                        noResponses++;
                    }else{
                        yesResponses++;
                    }
                }
                System.out.println(yesResponses + " happy friends coming to the July 4th party!");
                System.out.println(noResponses + " sad friends can't make it.");
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
    }
}