0

我一直在使用使用 do-while 循环的代码,我想在该循环中添加一个 if else 语句。do-while 循环检查用户输入的文本,并在输入单词“exit”时完成。

public static void main(String[] args) {

    String endProgram = "exit";
    String userInput;
    java.util.Scanner input = new java.util.Scanner(System.in);

    do {

        userInput = input.nextLine();
        if ( !userInput.equalsIgnoreCase(endProgram) ) {
            System.out.printf("You entered the following: %s", userInput);
        } else

    } while ( !userInput.equalsIgnoreCase(endProgram) );

}

当我尝试编译此代码时,我从命令提示符处收到一条错误消息:

SentinelExample.java:20: error: illegal start of expression
            } while ( !userInput.equalsIgnoreCase(endProgram) );
            ^
SentinelExample.java:22: error: while expected
      }
       ^
SentinelExample.java:24: error: reached end of file while parsing
}
 ^

当我删除循环中的 if else 语句时,程序编译得很好。我的程序中的语法有问题吗?还是不能将 if else 语句放在 while 循环中?

4

5 回答 5

2

在此处检查您的代码,您缺少else块:

    userInput = input.nextLine();
    if ( !userInput.equalsIgnoreCase(endProgram) ) {
        System.out.printf("You entered the following: %s", userInput);
    } else 

这就是编译错误的原因。您可以通过else完全删除或者如果要在其中添加某些内容来解决此问题,请执行以下操作:

    userInput = input.nextLine();
    if ( !userInput.equalsIgnoreCase(endProgram) ) {
        System.out.printf("You entered the following: %s", userInput);
    } else {
        // Do something
    }

if为了回答您的问题,是的,将语句嵌套在while循环中是完全有效的。

于 2013-08-16T04:38:17.367 回答
0

您缺少{}关闭 else 块。代替

do{
  if(){
  }else
}while()

利用

do{
  if(){
  }else{
  }
}while()
于 2013-08-16T04:39:23.003 回答
0

那是因为您的 else 语句只会使编译器认为 while 条件处于 else 条件并且是错误的。只需删除它

于 2013-08-16T04:39:50.807 回答
0

很有可能:

public static void main(String[] args) {

    String endProgram = "exit";
    String userInput;
    java.util.Scanner input = new java.util.Scanner(System.in);

    do {

        userInput = input.nextLine();
        if ( !userInput.equalsIgnoreCase(endProgram) ) {
            System.out.printf("You entered the following:"+userInput);// use plus ssign instead of %s
        }

    } while ( !userInput.equalsIgnoreCase(endProgram) );

}
于 2013-08-16T04:42:04.473 回答
0
package second;

public class Even {

    public static void main(String[] args) {

        int a=0;
        while (a<=100)
        {
            if (a%2==0)
            {
                System.out.println("The no is EVEN : " + a);
            }
            else 
            {
            System.out.println("The num is ODD : " + a);    
            }

        } } }

为什么这不能正常工作,它只显示0,甚至!

于 2017-04-28T17:59:34.117 回答