我很难理解第二个字符串不打印的原因。即使我注释掉第三个字符串"打印行,没有输出。
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块下的任何内容都会被执行,因此应该打印第二个和第三个字符串。
提前致谢!
答案 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;
,输入外if
(a > 0
),但不输入内if
(a == 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
}
仅当if
为condition
时,才会执行 true
阻止。仅当else
为condition
时才会执行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 ");
}
}