问题描述
importjava.util.Scanner;publicclassTest_resolve{publicstaticvoidresolve(intnum){for(inti=2;i<=num/2;i++){if(num%i==0){System.out.print(i+"*");resolve(num/i);}}System.out.println(num);System.exit(0);}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intnumber=sc.nextInt();resolve(number);}}
这是一个简单的质数分解程序,System.exit(0);在程序中是什么作用,如果没有这句话,程序打印出来的效果就完全不同了,这是什么情况
解决方案
解决方案二:
System.exit(0)退出程序的意思2种参数返回值:System.exit(0)--正常结束程序System.exit(1)--异常关闭程序;例如:你写一个批处理来启动程序,运行时你就可以根据返回值来判断程序运行的对与否
解决方案三:
System.exit退出程序。。。由于你用的是递归,所以在某个递归时会退出程序。
解决方案四:
System.exit(0)是把虚拟机停了。程序退出
解决方案五:
虚拟机进程停止,也就是当前程序进程退出了。由于你用的是递归调用,如果在调用最后一层不退出程序的话,当回归的时候会接着调用System.out.println(num);效果自然不一样了。
解决方案六:
其他地方可能没什么效果,递归是有用
解决方案七:
正常结束运行的程序
解决方案八:
直接杀死线程结束程序。
解决方案九:
打印是异步的,即发送一个打印请求由其他线程执行,System.exit(0)执行时可能还没有打印完
解决方案十:
System.exit(0)系统正常退出