System.exit(0)
表示程序正常退出
System.exit(status)
当status非0时,表示程序为非正常退出。
status=0, 关闭当前正在运行的虚拟机。
求质因数分解的程序如下:
两种算法:
一种是用System.exit(0)
// 若不加此句,代码在运行完System.out.println(number)后,会回到for中从i++开始执行,不断执行 else和后面的打印语句。是因为递归吗?
代码
package basic40;
public class Divid {
public static void divide(int a){
for (int i = 2; i <= (int)(Math.sqrt(a)); i++){
if(a % i == 0){
System.out.print(i+"*");
a = a / i;
divide(a);
break;
}
}
System.out.print(a);
System.exit(0);
}
public static void main(String []args){
int a = 90;
divide(a);
}
}
另一种是不用System.exit(0)
package basic40;
public class Divide2PrimeMultiple {
//need to judge whether the last number is prime number
public static void divide(int number) {
if (isPrimeNumber(number)) {
System.out.println(number);
} else {
int i = 2;
while(i <=(int)(Math.sqrt(number))){
if (number % i == 0) {
System.out.println(i + ",");
number = number / i;
divide(number);
break;
} else {
i++;
}
}
}
}
// }
private static boolean isPrimeNumber(int number) {
boolean flag = true;
for (int i = 2; i <= (int) (Math.sqrt(number)); i++) {
if (number % i == 0) {
flag = false;
break;
} else {
flag = true;
}
}
return flag;
}
public static void fenjie(int n){
for(int i=2;i<=(int)(Math.sqrt(n));i++){
if(n%i==0){
System.out.print(i+"*");
fenjie(n/i);
}
}
System.out.print(n);
System.exit(0);///不能少这句,否则结果会出错
}
public static void main (String []args){
int a = 90;
divide(a);
// divideNoJudge(a);
// fenjie(a);
}
}
麻烦很多,不仅有重复代码,而且增加运行负担。
有时候在递归中强制关闭编译器是有必要的。
System.exit(0)的更多相关文章
- android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别
android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...
- System.exit(0)和System.exit(1)区别
System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() .无论如何,内存都释放了!也就是说连JV ...
- System.exit(0)作用
System.exit(0)作用 public class HelloGoodbye{ try{ System.out.println(“Hello World”); System.exit(0) ...
- android开发时,finish()跟System.exit(0)的区别
这两天在弄Android,遇到一个问题:所开发的小游戏中有背景音乐,玩的过程中始终有音乐在放着,然后在我退出游戏后,音乐还在播放! 我看了一下我最开始写的退出游戏的代码,就是简单的finish() ...
- System.exit(0)和System.exit(1)区别:
System.exit(0)是将你的整个虚拟机里的内容都停掉了,而finish()只是退出了activity,并没有退出应用,Application还是存在于内存中的,除非被系统回收.无论如何,内存都 ...
- How to use Android Activity's finish(), onDestory() and System.exit(0) methods
Activity.finish() Calling this method will let the system know that the programmer wants the current ...
- android Process.killProcess 和 System.exit(0) 区别
1 Process.killProcess 和 System.exit(0) 两个都会 kill 掉当前进程. 你可以打开 DDMS 查看进程号,或 adb shell 进入 shell 然后 ps ...
- system.exit(0) vs system.exit(1)
2.解析 查看java.lang.System的源代码,我们可以找到System.exit(status)这个方法的说明,代码如下: /** * Terminates the currently ru ...
- android中 System.exit(0)的理解
public class HelloGoodbye{ try{ System.out.println(“Hello World”); System.exit(0); } finally { Syste ...
随机推荐
- Timer定时器
try { mTimerGoOut = new Timer(); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd" ...
- Eclipse插件安装总结
Eclipse的插件安装分为在线安装和离线安装两类: 1.在线安装(新版本的推荐方式) 最常用和最好用的方式,直接使用Eclipse的Ecliplse Marketplace,搜索你需要的插件,然后点 ...
- bzoj 3907: 网格 组合数学
3907: 网格 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 13 Solved: 7[Submit][Status][Discuss] Descr ...
- DIV+CSS 基础
盒子模型:margin(边界),可被占位:border(边框):padding(填充):content(内容) 块元素: 默认占据一行,前后换行. 作为容器,装载块元素和行内元素,被装载元素的位置,会 ...
- texCUBE() to CubemapSampler.Sample()
update dx9 to dx11 refers to CUBEMAP sampler texCUBE(CubeMpaSampler,normal) maybe change to Cubema ...
- java和javascript真的有关系=。=
相同点:1. 内存管理,两者都采用GC来对内存进行回收.因此Java与javascript的内存泄露情况十分相似. 2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V ...
- Json.net/Newtonsoft 3.0 新特性JObject/Linq to Json
原文:http://www.cnblogs.com/chsword/archive/2008/09/19/Newtonsoft_new_3_0.html http://www.cnblogs.com/ ...
- C# 使用TimeSpan计算两个时间差
转载:http://www.cnblogs.com/wifi/articles/2439916.html 可以加两个日期之间任何一个时间单位. private string DateDiff(Date ...
- java 追加写入代码一例
最近最项目参数化的时候用到,场景是这样的,需要测试A和B两个接口,其中B接口传入的参数必须是传递给A接口过的,所以整理一个思路就是: 1. 正常调用A接口,但是将传递给A接口的参数保存到文本里,此处要 ...
- Spring多资源文件properties的配置
Spring简化了加载资源文件的配置,可以通过<context:property-placeholder去加载,这个元素的写法如下: <context:property-placehold ...