无法输出测试无效时的值

Sno*_*sco -1 java

import java.util.Scanner;

public class Multiples {

  public static void main(String[] args) 
  {
    int number;
    Scanner kb = new Scanner(System.in);
    System.out.print("insert a number >");
    number = kb.nextInt();

    if (number >= 0 && number <= 100)
      if (number % 7 == 0)
        System.out.println("multiple of 7");
      else 
        System.out.println("not a multiple of 7");
      if (number % 2 == 0)
        System.out.println(" multiple of 2");
      else
        System.out.println("not a multiple of 2");
    else
      System.out.println("choose a different number");
  }

}
Run Code Online (Sandbox Code Playgroud)

代码工作正常,直到最后一刻.所有if语句都在接受测试的主IF内部工作.但是当我使用最后一个时,我得到语法错误.谁能告诉我哪里出错了?

Sot*_*lis 5

您需要在最顶部添加括号 if

if (number >= 0 && number <= 100) {
    if (number % 7 == 0)
        System.out.println("multiple of 7");
    else 
        System.out.println("not a multiple of 7");
    if (number % 2 == 0)
        System.out.println(" multiple of 2");
    else
        System.out.println("not a multiple of 2");
} else
    System.out.println("choose a different number");
Run Code Online (Sandbox Code Playgroud)

一个if块需要花{}括号,如果你想要一个以上的语句来作为其身体的一部分来执行.在您的情况下,您有2个if-else语句.因此,你需要大括号.

否则它相当于

if (number >= 0 && number <= 100) {
    if (number % 7 == 0)
        System.out.println("multiple of 7");
    else 
        System.out.println("not a multiple of 7");
}
if (number % 2 == 0)
    System.out.println(" multiple of 2");
else
    System.out.println("not a multiple of 2");

else
    System.out.println("choose a different number");
Run Code Online (Sandbox Code Playgroud)

并且最后一个else没有对应的if,这在Java中语法上是不正确的.

我们都建议您始终使用括号,而不管要在if-else块中执行的语句数量.