如何解决程序输出异常
这是我很困惑的程序:
public class Demo {
static int count = 0;
public static void main(String[] args) {
if(count < 3) {
count++;
main(null);
}else {
System.out.println("else");
}
System.out.println("Hello World!");
}
}
这是我得到的输出:
else
Hello World!
Hello World!
Hello World!
Hello World!
我不明白为什么要先打印其他内容。你能解释一下吗?谢谢
解决方法
您已使用了递归,因此仅在递归(以及Hello World
语句)结束时才执行if/else
打印。
这就是为什么打印的第一行是else
。
首先在控制台上显示它并不意味着它先执行。
在代码启动时,执行if
语句,然后调用main()
。在达到else
语句之前,没有打印。那就是main()
被召回3次。
因此,执行增加了变量,并提高了else
。
然后,对于每次递归,在else/if
另一行被打印之前。
由于这个原因,因为您先拥有else
,然后拥有4次Hello World!
。每次递归一次。
简而言之,您的代码有几种原因来说明其行为方式:
static int count = 0;
您在计数时使用静态值,这意味着所有内容都引用相同的整数。
main(null);
您递归地呼叫main
,但呼叫者正在等待main
退出。因此,您将count
递增3次,打印“ else”,最后打印“ Hello,World!”。现在完成执行的主要功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。