2017-01-15 8 views
0
package javaapplication1; 
import java.util.Scanner; 
public class JavaApplication1 { 
    public static void main(String[] args) { 
     System.out.println("What is the password?"); 
     Scanner new2 = new Scanner(System.in); 
     int input = 0; 

     while(input <= 5) 
     { 
      String password = new2.nextLine(); 
      if(!password.equals("bluesky123")){ 
       System.out.println("Incorrect password"); 
       input++; 
      } 

      else if("bluesky123".equals(password)) { 
       System.out.println("You got it right!"); 
       break; 
      } 
      else if(input == 5) { 
       System.out.println("maximum number of attempts reached"); 
       break; 
      } 
     }  
    } 

} 

基本的に、私は5回のループを踏んだら「不正なパスワード」と壊れてしまいます。 「最大試行」メッセージではありません。JAVA Whileループ最後のelse if文が正常に動作しない

+1

どのようにJavaプロセスに注意を払わなければならないどのようにあなたは今、それは終わっ起動しないのですか?右に戻り、別のパスワードが入力されるのを待ちます。間違ったパスワードを5回入力すると、プログラムが終了します。おそらく、 'println("パスワードとは何ですか? ")'をループの内側に入れるつもりでしたか? – Andreas

+0

申し訳ありませんが、間違った質問をしました。基本的に私が5回目の試みを打つと、それは "間違ったパスワード"だけを出力しますが、ブレークします。 – dylanelliott27

+2

あなたのロジックも疑わしいです。私が正しく読んでいるなら、 'input == 5'のコードブロックを入力することは決してありません。最初の2つのブロックですべてのケースをカバーし、 'input'が5以上の次のループでexitを実行します('!password.equals'を入力すると変数が5になります)。 – AntonH

答えて

1
while(input <= 5) 
    { 
     String password = new2.nextLine(); 
     if(!password.equals("bluesky123")){ 
      System.out.println("Incorrect password"); 
      input++; 
     } 
     else { 
      System.out.println("You got it right!"); 
      break; 
     } 

     if((input == 5) && (!password.equals("bluesky123"))) { 
      System.out.println("maximum number of attempts reached"); 
      break; 
     } 
    }  

ロジックにはいくつかの欠陥があります。あなたが/他の場合であれば

https://www.tutorialspoint.com/java/if_else_statement_in_java.htm

1

私はあなたのコードをテストしています!あなたがする必要がある唯一のものは、whileループ内の

System.out.println("What is the password?"); 

にフォローラインを移動することです、それは「不正なパスワード」を印刷し、それが再び印刷しますこれを行う 「パスワードとは何ですか?」

実際には動作しているので、ソフトウェアは実際にはパスワードが再入力されるのを待っていないようです。

+0

OPは質問を変更したので、この回答は残念ながらもう適用されません。 – AntonH

+0

ありがとうございます! – dylanelliott27

3

私が注釈を付ける許可:

この文は、常に評価されます場合:

 if(!password.equals("bluesky123")){ 
      System.out.println("Incorrect password"); 
      input++; 
     } 

このパスワードは、「bluesky123」であれば文はのみ評価される場合。この場合は、常にtrueと評価されます。

 else if("bluesky123".equals(password)) { 
      System.out.println("You got it right!"); 
      break; 
     } 

このif文が評価されることはありません。 if-elseが本当のステートメントを見つけると、そのステートメントの他のステートメントはすべてスキップされます。

 else if(input == 5) { 
      System.out.println("maximum number of attempts reached"); 
      break; 
     } 

あなたの場合、ネストされたif(ifは別のifがifの内側にある場合)を考慮する必要があります。

+0

良い説明 –

+0

非常に助けてくれてありがとう。 – dylanelliott27

関連する問題