锁定老帖子 主题:国王和100个犯人-
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-15
红楼一梦 写道
hkliya 写道
light=false; // 等号两边加空格哦
private HashMap<Integer,Prisoner> Prison; //变量名首字母小写哦
if(!once&&!light){ // 两个否定很晕哦
for(int i=1;i<100;i++) //100这个Magic Number是什么意思哦
我从c++过来的,留着很多c++的习惯。等号两边加不加空格和变量小不小写这样的细节还的确没注意过。以前写c++从来不管这些。两个否定嘛,也是从c++那边搬来的习惯。我觉得c++的代码简洁,Java代码不如c++灵活。100这个数字,楼主要是不明白那我就没办法了,100个囚犯啊。
还有这个100不是我不知道什么意思,假如现在要换成200个人,那你不是要改很多地方么 |
|
返回顶楼 | |
发表时间:2010-01-15
hkliya 写道
红楼一梦 写道
hkliya 写道
light=false; // 等号两边加空格哦
private HashMap<Integer,Prisoner> Prison; //变量名首字母小写哦
if(!once&&!light){ // 两个否定很晕哦
for(int i=1;i<100;i++) //100这个Magic Number是什么意思哦
我从c++过来的,留着很多c++的习惯。等号两边加不加空格和变量小不小写这样的细节还的确没注意过。以前写c++从来不管这些。两个否定嘛,也是从c++那边搬来的习惯。我觉得c++的代码简洁,Java代码不如c++灵活。100这个数字,楼主要是不明白那我就没办法了,100个囚犯啊。
还有这个100不是我不知道什么意思,假如现在要换成200个人,那你不是要改很多地方么 以前写C/C++都是直接写if(a)或if(!a),从来不写if(a!=0)或if(a==0)。Java中我就也这样写了。改成200只要改两个数字,我写的时候没考虑太多扩展性。其实可以把100作为一个静态常量写到Prisoner里。 |
|
返回顶楼 | |
发表时间:2010-01-15
for(;;){}这样的语句在JDK src里经常看的到
大概while(true){}每次循环还得判断条件true? 而 第一种直接循环 效率高吧 哈哈 |
|
返回顶楼 | |
发表时间:2010-01-15
哈哈,看了这么多,我觉得很奇特的一点是:犯人怎么会有灯亮和灯灭的属性?难道犯人自己会亮,自己会灭。
|
|
返回顶楼 | |
发表时间:2010-01-15
灯的实现是一个单例模式,不同意的不要顶
|
|
返回顶楼 | |
发表时间:2010-01-15
liuyu220 写道 灯的实现是一个单例模式,不同意的不要顶
灯是可以坏的哦,坏了是可以换的 所以灯放在院子里,犯人知道院子在哪里就行了 |
|
返回顶楼 | |
发表时间:2010-01-15
红楼一梦 写道
hkliya 写道
红楼一梦 写道
hkliya 写道
light=false; // 等号两边加空格哦
private HashMap<Integer,Prisoner> Prison; //变量名首字母小写哦
if(!once&&!light){ // 两个否定很晕哦
for(int i=1;i<100;i++) //100这个Magic Number是什么意思哦
我从c++过来的,留着很多c++的习惯。等号两边加不加空格和变量小不小写这样的细节还的确没注意过。以前写c++从来不管这些。两个否定嘛,也是从c++那边搬来的习惯。我觉得c++的代码简洁,Java代码不如c++灵活。100这个数字,楼主要是不明白那我就没办法了,100个囚犯啊。
还有这个100不是我不知道什么意思,假如现在要换成200个人,那你不是要改很多地方么 以前写C/C++都是直接写if(a)或if(!a),从来不写if(a!=0)或if(a==0)。Java中我就也这样写了。改成200只要改两个数字,我写的时候没考虑太多扩展性。其实可以把100作为一个静态常量写到Prisoner里。
light=true; once=true; }
我觉得这样比较容易读: if (once || light) { return; }
light = true; once = true; 你觉得呢 |
|
返回顶楼 | |
发表时间:2010-01-15
antiwise 写道 for(;;){}这样的语句在JDK src里经常看的到
大概while(true){}每次循环还得判断条件true? 而 第一种直接循环 效率高吧 哈哈 这位大大,两种写法的意义和效果都是完全一样的呀 public class A { public void b() { for (;;) ; } public void c() { while(true) ; } } 出来的b和c的字节码是完全一样的 Code: Stack=0, Locals=1, Args_size=1 0: goto 0 |
|
返回顶楼 | |
发表时间:2010-01-15
最后修改:2010-01-15
bugmenot 写道 antiwise 写道 for(;;){}这样的语句在JDK src里经常看的到
大概while(true){}每次循环还得判断条件true? 而 第一种直接循环 效率高吧 哈哈 这位大大,两种写法的意义和效果都是完全一样的呀 public class A { public void b() { for (;;) ; } public void c() { while(true) ; } } 出来的b和c的字节码是完全一样的 Code: Stack=0, Locals=1, Args_size=1 0: goto 0 是哦,我也测试了一下,应该是编译期优化的结果吧 public class For{ public void testFor() { for(;;){ int i=0; } } public void testWhile(){ while(true){ int i=0; } } } javap -c For结果是: Compiled from "For.java" public class For extends java.lang.Object{ public For(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public void testFor(); Code: 0: iconst_0 1: istore_1 2: goto 0 public void testWhile(); Code: 0: iconst_0 1: istore_1 2: goto 0 } code] |
|
返回顶楼 | |
发表时间:2010-01-15
myreligion 写道
在我看来,程序内出现System.out.println一般都在1年以内,或者只相当于一年以内。呵呵~~
学过方法论没,具体问题具体分析 |
|
返回顶楼 | |