Java - 如果是Else Logic

时间:2018-06-15 16:08:47

标签: java if-statement

我很难理解第二个字符串不打印的原因。即使我注释掉第三个字符串"打印行,没有输出。

public class SecretMessage {
       public static void main (String [] args) {
            int aValue=4;
            if (aValue > 0){
                if (aValue == 0)
                System.out.print("first string   ");
        }
        else 
        System.out.println("second string   ");
        System.out.println("third string   ");
        }
    }

为什么没有"第二个字符串"打印?我认为else块下的任何内容都会被执行,因此应该打印第二个和第三个字符串。

提前致谢!

3 个答案:

答案 0 :(得分:3)

如果我们正确缩进你的代码并编写(隐式)括号,那么显而易见的是:

public class SecretMessage {
    public static void main (String[] args) {
        int aValue = 4;
        if (aValue > 0){
            if (aValue == 0) {
                System.out.print("first string");
            }
        } else /* if (avalue <= 0) */ {
            System.out.println("second string");
        }
        System.out.println("third string");
    }
}

使用aValue = 4;,输入外ifa > 0),但不输入内ifa == 0)。因此,未输入else。因此只有System.out.println("third string");被执行。

对您的代码的一些评论:

  • 永远不能输入内部if。如果输入了外if,则i> 0,因此不能为== 0
  • 您使用System.out.print(...)System.out.println(...)。我有一种感觉,你想要使用其中一种。为了便于阅读,您还可以忽略这些语句中的尾随空白。
  • 数组括号([])应该直接跟随类型,没有空格(String [] args - &gt; String[] args)。

答案 1 :(得分:0)

if(condition){
    //code
}else{
    //othercode
}
仅当ifcondition时,才会执行

true阻止。仅当elsecondition时才会执行false阻止。

https://www.tutorialspoint.com/java/if_else_statement_in_java.htm

答案 2 :(得分:-1)

因为aValue在代码aValue=4;中总是超过4。

你还需要注意括号。

public class SecretMessage {
       public static void main (String [] args) {
            int aValue=4;
            if (aValue > 0){
                if (aValue == 0)
                    System.out.print("first string   ");
            }
            else 
                System.out.println("second string   ");
            System.out.println("third string   ");
        }
    }

与下面的代码相同(但不像阅读一样干净),更清楚的是为什么只打印第二个字符串 - 解释here

public class SecretMessage {
   public static void main (String [] args) {
        int aValue=4;
        if (aValue > 0){
            if (aValue == 0) {
                System.out.print("first string   ");
            }
        } else { 
            System.out.println("second string   ");
        }
        System.out.println("third string   ");
    }
}