Java功课帮助

use*_*246 5 java

我已经尝试过这项任务.但是当我输入1时它不应该给出任何输出,因为1> 0且1不是偶数但我仍然得到输出为:

Enter a +ve number
1
You entered 1
I'd asked for a +ve number :)
Run Code Online (Sandbox Code Playgroud)

.

 import java.util.Scanner;
 class Main {
    public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.println("Enter a +ve number");
      int number = input.nextInt();
      System.out.println("You entered "+number);
      if(number > 0)
         if(number %2 == 0)
             System.out.println("Number"+number+" is even and +ve");
         else
             System.out.println("I'd asked for a +ve number :)");
     }
 }
Run Code Online (Sandbox Code Playgroud)

cod*_*ict 9

你的其他人实际上属于第二个 if而不是第一个,if因为缩进显示.

if(cond1)
 if(cond2) 
else   // this else belongs to 2nd if not 1st if.
Run Code Online (Sandbox Code Playgroud)

与:

if(cond1) {
 if(cond2) {
 } else {
 }
}
Run Code Online (Sandbox Code Playgroud)

这是因为Java语法说其他属于它可能属于的最接近的不匹配项.

如果您想要将else与first匹配,则需要使用括号:

if(cond1) {
 if(cond2) {
 } 
} else { 
}
Run Code Online (Sandbox Code Playgroud)


Pis*_*3.0 8

检查代码是否实际遵循了它应该遵循的逻辑 - 缩进对流控制没有帮助,这就是大括号{}的用途.

  • 这就是为什么即使在if子句之后只有一行代码,我总是会使用大括号. (3认同)

dec*_*eze 5

这可能是因为你ifs的解释如下:

if(number > 0)
    if(number %2 == 0)
        System.out.println("Number"+number+" is even and +ve");
    else
        System.out.println("I'd asked for a +ve number :)");
Run Code Online (Sandbox Code Playgroud)

电脑应该怎么知道你的意思?您需要使用括号使其明确:

if(number > 0) {
    if(number %2 == 0) {
        System.out.println("Number"+number+" is even and +ve");
    }
} else {
    System.out.println("I'd asked for a +ve number :)");
}
Run Code Online (Sandbox Code Playgroud)