Java:虽然即使条件为假,循环仍然运行

问题描述:

我在编程和Java中相当新,但我希望我能弄清楚这一点。我有一个做while循环,里面,我有一个while语句,如果不正确的值输入扫描仪。但是,当我运行代码时,它总是运行一次while命令,而不管它是不正确还是正确,然后正确运行代码。Java:虽然即使条件为假,循环仍然运行

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

remove;从最后的陈述,而 – Satya

+0

@Satya只从第一个。第二个终止一个'do/while',那里的分号是正确的。 – EJP

+0

@EJP,你是对的先生:)。抱歉的错误。 – Satya

从while循环

筛选删除多余的;

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

仅限第一个。第二个终止一个'do/while',那里的分号是正确的。 – EJP

+0

@turnipdabeets非常感谢,我非常感谢。在每行结束后添加分号时遇到问题。这工作完美! –

+0

@GavinWebb没问题,很高兴我能帮忙! – Turnipdabeets

而(X < 1 || X> 15); 半冒号将终止逻辑,并且控制将始终传递到下一行。当你编码时要小心:D

  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(); 

    } 

}