int a=10, b=5;
if(a>b)
{
if(b>5)
System.out.println("b is:"+b);
}
else
System.out.println("a is:"+a");
}
此代码在运行时没有显示输出,为什么?
答案 0 :(得分:6)
您的代码段注释:
int a=10, b=5;
if(a>b) // is true (10>5)
{
if(b>5) // is false (5>5)
System.out.println("b is:"+b);
// no else case, so does nothing
}
else // never gets here
System.out.println("a is:"+a");
} // unmatched bracket
确保您的完整代码中没有语法错误(如无法匹配的括号),并且始终存在其他情况,仅用于开发目的。
答案 1 :(得分:1)
悬挂其他歧义。您是否使用else子句匹配错误的if子句?这是一个常见错误。
这通常是由于格式不佳造成的。
这是你的代码:
int a=10, b=5;
if(a>b)
{
if(b>5)
System.out.println("b is:"+b);
}
else
System.out.println("a is:"+a");
}
这是一个格式正确的代码:
int a=10, b=5;
if(a>b)
{
if(b>5)
System.out.println("b is:"+b);
}
else
System.out.println("a is:"+a");
}
查看每个语句的缩进方式。很明显,else
子句与外部if
相关联。但是,在你的代码中很难看到。
您的IDE可以为您正确格式化代码。例如,如果您使用的是Eclipse,则可以选择代码并按Ctrl + I
格式化代码。
答案 2 :(得分:0)
if(a>b)
= true
|没有输出
if(b>5)
= false
|无输出(原因:5不大于5)
else
阻止没有被执行
答案 3 :(得分:0)
您的代码显示没有输出,因为> b但b = 5,不大于。要解决此问题,请将if(b>5)
更改为if(b>=5)
。
答案 4 :(得分:0)
这是另一种重新格式化使问题更加清晰的案例。
int a=10, b=5;
if(a>b) { // 'true' - This block is executed
if(b>5) // 5 is not greater than 5, it's equal, so this isn't executed
System.out.println("b is:"+b);
} else { // This is not executed
System.out.println("a is:"+a);
}
当一个错误变得混乱时,只需逐步执行该程序并按照编译器的想法进行思考。另外,如果您使用{ braces }
语句的大括号,我建议为else
语句形成一个带if
的完整块,它会使事物更好地结合在一起,并且更容易阅读。确保事物缩进正确也使事情更容易理解。可读性很重要!
答案 5 :(得分:0)
int a=10, b=5;
if(a>b)
{
if(b>5)
System.out.println("b is:"+b);
}
else
System.out.println("a is:"+a");}
在上面的代码中首先,如果你正在检查(a> b),即(10> 5)条件为真,那么首先在if内执行if if。 在你的第二个if条件(b> 5),即(5> 5)条件是假的。因此它终止了程序,因此它不会显示任何内容。 为了更好地理解,我按如下方式编辑代码:
int a=10,b=5;
if(a>b) // This condition is true so this if block executed
{
if(b>5) // this is false so this block won't execute.
{
System.out.println("b is :"+b);
}
}
else // Alredy first if executed because true condition so this also not executing
{
System.out.println("a is :"+a);
}
// Thats why you don't get any output in this program.