2017-04-09 5 views
-1

だから私がしなければならないことは、ファイルから読み込み、入力が見つかった場合にHRがいくつか入力された後に入力がある行を印刷することです。それはソートされていますが、私の問題は私のelse文です.HRコードが見つからなければ、それは入力が見つからなかったのですが、入力した番号が見つかったとしても問題はありません。その中に番号がない行。 (申し訳ありませんが、物事を説明してくそ)が、とにかくここにコードです。else文で行を読むときに問題が発生する

これがわかりやすいかどうかわかりませんが、入力が見つかったら行が印刷されていればうまくいきます。しかし、私は何をする必要があります。入力が見つからない場合は、その後、私はそれは、入力がファイルに見つからなかったことをプリントアウトしたいのですが、私はそれがファイルに

package Assignment; 

import java.util.*; 
import java.io.*; 

public class Planets1 { 


    public static void main(String [ ] args) 
    { 
     { 
      File file =new File("stars1.dat"); 
      Scanner in; 

      Scanner keyboard = new Scanner (System.in); 
      System.out.println("Enter HR code : "); 

      String userInput = keyboard.nextLine(); 
      try { 
       in = new Scanner(file); 
       while(in.hasNext()) 
       { 
        String line=in.nextLine(); 
        if(line.contains(userInput.toUpperCase())) 
         System.out.println(line); 
        else if(!line.contains(userInput.toUpperCase())) 
         System.out.println("No Planet with the HR code: " + userInput.toUpperCase() + " Was found."); 

       } 
      } catch (FileNotFoundException e) { 

       e.printStackTrace(); 
      } 


    } 
    } 
} 

、何であるすべての行のためにプリントアウトする必要はありませんコードが見つかった場合には、出力された:

Hrで897

Acamar、シータ1エリダニ; HR 897

はHRコードを入力してください3210

HRコードのある惑星はありません:HR 897が見つかりました。

HRコードのある惑星:HR 897が見つかりました。

HRコードのある惑星:HR 897が見つかりました。

HRコードのある惑星:HR 897が見つかりました。

HRコードのある惑星:HR 897が見つかりました。

HRコードのある惑星:HR 897が見つかりました。

+0

ない、これはあなたのを解決するために起こっているかどうかわからをいくつかのアドバイス:1) 'if'と' else if'ボディの周りに '{}'を追加してください。 2) 'else if(...)'を単純な 'else'にすることができます。 – domsson

+0

3)ループ条件に 'hasNext()'を使用しているのになぜ 'nextLine()'を使用しているのですか?あなたは 'hasNextLine()'があることを知っていますよね? – domsson

+0

4)一致しない行には何も表示しない場合は、 'else if'部分全体を完全に削除しないでください。私はあなたがしようとしていることを誤解しているかもしれません... – domsson

答えて

1

if . . . else ifは、入力ファイルのすべての行に対して実行されています。

ファイル内の行が入力HRコードと一致すると、その行が印刷されます。

他のすべての行について、がHRコードと一致しない場合、「いいえ惑星...が見つかりました」というメッセージが表示されます。

あなたは印刷するかどうかを決定する前に、ファイル内のすべての行を処理した後まで待つ必要がメッセージ「いいえ惑星を発見された。。。」:

boolean found = false; 
while(in.hasNext()) 
{ 
    String line=in.nextLine(); 
    if(line.contains(userInput.toUpperCase())) { 
     System.out.println(line); 
     found = true; 
    } 
} 
if (found == false) { 
    System.out.println("No Planet with the HR code: " + userInput.toUpperCase() + " Was found."); 
} 
関連する問題