2014-06-12 46 views
-4

为什么输出“休息”和“学习?”它不应该只是“学习”吗?两条if语句的输出

boolean isSleeping = false; 
    boolean isStudying = true; 
    if (isSleeping) 
     System.out.println(" Sleeping "); 
     System.out.println(" Resting "); 
    if (isStudying) 
     System.out.println(" Studying "); 
+4

因为'System.out.println(“Resting”);'不在第一个if语句中。 – immibis

+2

大括号定义块的范围.. – TheLostMind

+1

Python转换? – usr2564301

回答

1
if (isSleeping) 
    System.out.println(" Sleeping "); // your if condition's scope ends here 
    System.out.println(" Resting ");// always printed 
if (isStudying) 
    System.out.println(" Studying "); // your second if condition's scope ends here 
1

使用{ }如果要执行两个语句。

像这样:

if (isSleeping) { 
    System.out.println(" Sleeping "); 
    System.out.println(" Resting "); 
} 
else if (isStudying) { 
    System.out.println(" Studying "); 
} 

我已经编辑和添加else也因为symentically有人睡觉或休息不学习。

1

if语句后面添加大括号,如果您想要为该条件执行更多语句。

boolean isSleeping = false; 
    boolean isStudying = true; 
    if (isSleeping){ 
     System.out.println(" Sleeping "); 
     System.out.println(" Resting "); 
    } 
    if (isStudying) 
     System.out.println(" Studying "); 
3

基本上,因为你已经不是封闭的第一if语句内容{...}之间,它基本上是qualivent的话说...

if (isSleeping) 
    System.out.println(" Sleeping "); 

System.out.println(" Resting "); 

if (isStudying) 
    System.out.println(" Studying "); 

相反,使用尝试...

if (isSleeping) { 
    System.out.println(" Sleeping "); 
    System.out.println(" Resting "); 
} 
if (isStudying) { 
    System.out.println(" Studying "); 
} 

这就是为什么鼓励在您的条件语句周围使用大括号的原因之一

1

您的if语句不使用{...}。因此,它会考虑您的if以外的第二行。

试试这个:

boolean isSleeping = false; 
boolean isStudying = true; 
if (isSleeping) {       // the following code between brackets will be executed. 
    System.out.println(" Sleeping "); 
    System.out.println(" Resting "); 
} 
if (isStudying) 
    System.out.println(" Studying ");  // Without bracket, it executes only the line until the semi-colon. 
1

读什么范围:SCOPE

if声明没有{}具有为范围的代码条件后的第一行..

不过,如果你想要打印只能睡你必须做的:

boolean isSleeping = false; 
    boolean isStudying = true; 

    if (isSleeping){ 
     System.out.println(" Sleeping "); 
    } 

     System.out.println(" Resting "); 

    if (isStudying){ 
     System.out.println(" Studying "); 
    } 
1
if(true) 
line 1 
line 2 

上述if语句是不带括号{} ..这意味着if语句仅适用于刚刚后IF语句的线(线1)..

if(true) 
{ 
line 1 
line 2 
} 

if语句上面括号是人的brackets..this的全身= pplicable同时适用于线1和线2 ..

所以你的情况

if (isSleeping) 
    System.out.println(" Sleeping "); 
    System.out.println(" Resting "); 

这个if语句只适用于第一行的“Sleepinfg”于是“休息”是免费的任何IF statement..so“休息”永远是在输出文件

你的代码应该是喜欢这个..

boolean isSleeping = false; 
boolean isStudying = true; 
if (isSleeping) 
{ 
    System.out.println(" Sleeping "); 
    System.out.println(" Resting "); 
} 
if (isStudying) 
{ 
    System.out.println(" Studying "); 
}