{
System.out.println("Enter input file name:");
Scanner keyboard = new Scanner(System.in);
String fileName = keyboard.nextLine();
File read = new File(fileName);
Scanner inputFile = new Scanner(read);
if(read.length() == 0)
{
System.out.println("empty file");
return;
}
inputFile.useDelimiter(":");
String name, code, line, distance;
System.out.println("Enter station name");
String stationName = keyboard.nextLine();
while(inputFile.hasNextLine())
{
name = inputFile.next();
code = inputFile.next();
line = inputFile.next();
distance = inputFile.nextLine();
if(stationName.equalsIgnoreCase(name))
{
System.out.println("Station code: " + code + " name: " + name);
System.out.println("distance " + distance + " kms, is on the " + line + " line");
}
else if(!stationName.equalsIgnoreCase(name))
{
System.out.println("No information was found for station " + stationName);
}
あなたが見ることができるように、コードの多くの行のために、テキストファイルに最終行のコードが複数回出力されます。一度だけ印刷する方法はありますか? ありがとうございます。一度この文を印刷したいとループ を終了した場合、あなたが を追加することができますwhileループで文を一度だけ印刷するにはどうすればよいですか?
else if(!stationName.equalsIgnoreCase(name))
{
System.out.println("No information was found for station " + stationName);
break;
}
あなたはhasPrintedは= falseの場合、その後、&&追加MAKEブール変数を宣言することができます!あなたの他のif文にhasPrinted、内側真 –
にhasPrintedを設定するロジックでのSystem.out.printlnのラッパーメソッドを書きますそれはtrueを返します。それは "印刷"と言う。印刷後にブレークする。 – randominstanceOfLivingThing
注:この例では、else if条件は必要ありません。 stationNameが名前と等しくなければ、2番目のブロックだけを入力するので、それ以外は十分です。 –