2017-03-02 6 views
-1

私はコーディングではかなり新しいですが、一般的にはJavaで一般的ですが、私はこれを理解できると期待しています。私はdo whileループを持っており、その中に不正な値がスキャナに入力されているとwhileステートメントがあります。しかし、コードを実行すると、間違っているか正しくないかにかかわらずwhileコマンドが常に実行され、コードが正しく実行されます。Java:条件が偽であってもwhileループがまだ実行中

import java.util.Scanner; 
public class Practice { 
public static void main (String [] args) { 
int x = 0; 
int i = 0; 
int n = 0; 
String S1 = ""; 

Scanner user = new Scanner(System.in); 


do 
{ 
    System.out.println("Enter an integer between 1 and 15: "); 
    x = user.nextInt(); 



     while (x < 1 || x > 15); 
     { 
      System.out.println("Incorrect integer. Must be between 1 and 15. Try again: "); 
      x = user.nextInt(); 
     } 

    n = 1; 


} 
while (n != 1); 


for (i = 1; i <= x; i++) 
{ 
    S1 = S1 + "X"; 
} 

for (n = 1; n <= x; n++) 
{ 
    System.out.println(S1); 
} 


    } 


} 

ありがとうございます。

+3

削除;の文の末尾から – Satya

+0

@サティヤ最初のものからのみ。 2番目は 'do/while'を終了し、セミコロンは正しいです。 – EJP

+0

@EJP、あなたは正しいです:)。エラーのお詫び – Satya

答えて

4

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

から余分な;を削除します。

while (x < 1 || x > 15){ 
      System.out.println("Incorrect integer. Must be between 1 and 15. Try again: "); 
      x = user.nextInt(); 
} 
+1

最初のものからのみ。 2番目は 'do/while'を終了し、セミコロンは正しいです。 – EJP

+0

@turnipdabeetsありがとう、本当にありがとう。私は各行の最後の後にセミコロンを追加することに問題があります。これは完全に機能しました! –

+0

@GavinWebb問題はありません。うれしいです! – Turnipdabeets

2

しばらく(X < 1 || x>の15)。 セミコロンはロジックを終了し、制御は常に次の行に移ります。 D

0
  1. しばらくの間、余分なセミコロンを削除してください。
  2. スキャナオブジェクト(ユーザー)も閉じます。

更新されたコードを確認してください。

public class Practice { 
    public static void main(String[] args) { 
     int x = 0; 
     int i = 0; 
     int n = 0; 
     String S1 = ""; 

     Scanner user = new Scanner(System.in); 
     do { 
      System.out.println("Enter an integer between 1 and 15: "); 
      x = user.nextInt(); 

      while (x < 1 || x > 15) 
      { 
       System.out.println("Incorrect integer. Must be between 1 and 15. Try again: "); 
       x = user.nextInt(); 
      } 

      n = 1; 

     } while (n != 1); 

     for (i = 1; i <= x; i++) { 
      S1 = S1 + "X"; 
     } 

     for (n = 1; n <= x; n++) { 
      System.out.println(S1); 
     } 

     user.close(); 

    } 

} 
関連する問題