作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
鉴于我已经有大约 2 年的编程经验,这可能是一个非常初学者的问题,但是嵌套的 IF 条件语句以及它们如何在没有大括号的情况下如何工作一直困扰着我。
我一直使用大括号来保持我的编码井井有条。例如像这样。
public static void main(String[] args)
{
int x = 9;
int y = 8;
int z = 7;
if (x > 9)
{
if (y > 8)
{
System.out.println("x > 9 and y > 8");
}
}
else if (z >= 7)
{
System.out.println("x <= 9 and z >= 7");
}
else
{
System.out.println("x <= 9 and z < 7");
}
}
我一直使用这种模式,因为它一直对我有用。
但是,为什么以这种格式编写的东西不能以同样的方式工作?
public static void main(String[] args)
{
int x = 9;
int y = 8;
int z = 7;
if (x > 9)
if (y > 8)
System.out.println("x > 9 and y > 8");
else if (z >= 7)
System.out.println("x <= 9 and z >= 7");
else
System.out.println("x <= 9 and z < 7");
}
第一个代码会打印出 x <= 9 和 z >= 7,但第二个代码什么也不会打印。 (我假设 else if 和 else 语句在初始 if 语句中)。
换句话说,当像上面的例子那样没有大括号出现时,编译器如何测试条件语句的规则是什么?我试过在网上找资料,但我似乎找不到资料和/或我不知道如何具体调用这个问题来研究我的疑惑。
最佳答案
第二,如果我在上面加上大括号,编译器就会这样。因为 else if
或 else
会立即找到 if
。
if (x > 9) {
if (y > 8){
System.out.println("x > 9 and y > 8");
}else if (z >= 7) {
System.out.println("x <= 9 and z >= 7");
}else {
System.out.println("x <= 9 and z < 7");
}
}
如果你必须复制你应该至少放一个大括号:
if (x > 9) {
if (y > 8)
System.out.println("x > 9 and y > 8");
else if (z >= 7)
System.out.println("x <= 9 and z >= 7");
}else
System.out.println("x <= 9 and z < 7");
现在,Last else 肯定先关闭 if 语句。
关于java - 不使用大括号的嵌套 IF 条件语句的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956616/
我是一名优秀的程序员,十分优秀!