SSAから赤ちゃんの名前のファイルを読んで、指定された年の名前の数に関する統計を返す学校用のプログラムを作成しています。if-elseステートメントの後でもブール変数がtrueに設定されています
偽のfound
ブール値を出力するのに問題があります。これにより、指定された名前が見つからないことが表示されます。
import java.util.*;
import java.io.*;
public class BabyNames{
public static void main(String []args)
throws FileNotFoundException
{
File file = new File ("babynames.txt");
Scanner input = new Scanner(file);
Scanner console = new Scanner(System.in);
int amount = 0;
System.out.print("Name? ");
String s1 = console.next();
boolean found = true;
while (input.hasNextLine()) {
String line = input.nextLine();
Scanner lineScan = new Scanner(line);
String name = lineScan.next();
if(name.equals(s1)){
found = true;
for(int i = 1; i<= 11; i++) {
amount = lineScan.nextInt();
int k = amount/20;
System.out.print((i * 10) + 1890 + ": ");
for(int r = 1; r <= k; r++) {
System.out.print("*");
}
System.out.println();
}
} else {
found = false;
}
}
if(found = false){ //it never turns back into false
System.out.println(s1 + " is not found.");
}
input.close();
}
}
それでも論理には深刻な欠陥があります。検索された値のチェックは最後の入力行だけをチェックします。その値は他のすべての入力行では無視されます。 – FredK
IDEのデバッガを知ることは、大いに役立ちます。あなたは 'found'が毎回' false'になるのを見たでしょう) – CubeJockey