2016-03-29 12 views
-2
{ 
    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; 
} 
+1

あなたはhasPrintedは= falseの場合、その後、&&追加MAKEブール変数を宣言することができます!あなたの他のif文にhasPrinted、内側真 –

+1

にhasPrintedを設定するロジックでのSystem.out.printlnのラッパーメソッドを書きますそれはtrueを返します。それは "印刷"と言う。印刷後にブレークする。 – randominstanceOfLivingThing

+0

注:この例では、else if条件は必要ありません。 stationNameが名前と等しくなければ、2番目のブロックだけを入力するので、それ以外は十分です。 –

答えて

-2

ブレーク; if文の後に

else if(!stationName.equalsIgnoreCase(name)) 
    { 
     System.out.println("No information was found for station " + stationName); 
break; 
    } 
-2

:あなたはこのようにwhileループ

から抜け出すために「ブレーク」文を必要とする

4

あなたがしたいことは、ファイル全体を読んだ後にこのエラーメッセージを表示することだと思います。ブール変数stationFoundfalseに初期化し、対応するステーションが見つかったときにtrueに設定することができます。 whileループの後に、stationFoundがtrueであるかどうかを確認し、エラーメッセージが表示されない場合はチェックすることができます。

breakを使用すると、不必要なときにファイル全体を読み取らないように、対応するステーションが見つかったことに注意してください。ここで

は、それがコード内でどのように見えるかです:

boolean stationFound = false; 
while(inputFile.hasNextLine()) 
{ 
    // ... 
    if(stationName.equalsIgnoreCase(name)) 
    { 
     System.out.println("Station code: " + code + " name: " + name); 
     System.out.println("distance " + distance + " kms, is on the " + line + " line"); 
     stationFound = true; 
     break; 
    } 
} 


if(!stationFound) 
{ 
    System.out.println("No information was found for station " + stationName); 
} 
+0

実際に彼がやろうとしていることを理解しているようです –

-2

あなたがブレークを挿入すると考えられていますか?

else if(!stationName.equalsIgnoreCase(name)) 
{ 
    System.out.println("No information was found for station " + stationName); 
    break; 
} 
関連する問題