我正在尝试编写一个Java程序,其中计算从输入文件参加聚会的人数。该文件将始终采用这种格式,例如:
用户将不知道输入格式中有多少行。该程序将返回有多少人参加聚会,有多少人没有参加聚会。以下是我当前的代码:
我希望我的输出像这个例子一样。
但是,我遇到此错误。
有什么办法可以解决此问题并改进代码以获得所需的格式?
答案 0 :(得分:1)
您正在使用Scanner
和BufferedInputStream
的混合物。只需选择一个并坚持下去即可。
或更妙的是-使用现代的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)
首先,您应该注意响应文件的目录:
此代码有效:
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();
}
}
}