作者pelicanper (派立肯)
看板java
标题Re: [承上面]67个if的美学果然不适合小弟...
时间Wed Oct 17 15:04:30 2012
其实不用一直执着在"数字",用String最快,
而且可以不只用来猜数字,也可以猜字母猜符号
另外,利用Java提供的Collection Framework可以很容易处理选到同号码的问题
以下的程式可以产生一个字串内包含不重复的character
程式已经经过测试,欢迎转载讨论
String[] resource = new String[]{"0","1","2","3","4","5","6","7","8","9"};
String result = "";
//Java 的Collection Framework中 HashSet只允许加入不相同的物件
Set<String> temp = new HashSet<>();
//temp的size()初始值为0
while(temp.size()<4){
//当乱数加入一个resource时,如果和HashSet中的物件重复就不会成功
//此时temp.size()保持不变,如果不重复temp.size()才会加1
temp.add(resource[(int)(Math.random()*10)]);
}
//当temp.size()变成四的时候再把它变回字串输出
for(String tempString :temp){
result += tempString;
}
System.out.println(result);
请参考
http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html
boolean add(E e)
Adds the specified element to this set if it is not already present.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.92.244.103
1F:推 LaPass:呃..... 猜文字!? 10/17 15:20
2F:推 superlubu:你确定不重复?要不要先试跑一百遍看看? 10/17 15:52
跑了一千遍,没有重复...
重复的定义是字串内的四个字元不会重复,不是随机产生的两个字串不会重复
如果是後者的话,很抱歉这不是这段程式的目的
我放了注解在上面的程式码里面,参考一下,有问题可以讨论
3F:推 AtarashiAko:我还是看不出来为什麽这样可以不重复,有人可以解释吗 10/17 15:58
4F:推 superlubu:而且老实说,那个 temp 看来纯粹是为了占资源用的... 10/17 16:07
※ 编辑: pelicanper 来自: 27.252.6.71 (10/17 16:26)
5F:推 LaPass:SET的特性就是里面不会有重复的值啊.... 10/17 16:29
6F:推 No:yes~ 这是利用Set的特性 10/17 16:30
7F:→ pelicanper:这就是写程式好玩的地方,有很多撇步可以用 10/17 16:32
8F:推 superlubu:噢... 我忽略了 Set 的特性,抱歉 <(_ _)> 10/17 16:38
没有关系,写程式最重要的就是做中学
质疑,挑战,被挑战,才是进步的动力
不过提到资源,在大的程式的确会有这个问题
但是这个程式应该是不会发生所谓占资源,而且大脑也是一种资源
用很多条件式一旦哪里出错Debug就浪费了大脑细胞和时间的资源
有现成的Collection Framework可以用放弃实在可惜
不含输出只要7行(可以变成5行),又有JAVA帮我检查会不会重复,三分钟可以解决
我是不太在乎电脑资源够不够用...
※ 编辑: pelicanper 来自: 27.252.6.71 (10/17 16:50)
9F:推 AtarashiAko:没用过Set呢,学到新方法了XD 10/17 16:45
※ 编辑: pelicanper 来自: 27.252.6.71 (10/17 16:52)
10F:→ superlubu:其实我一直都很少使用 set, list 之类的东西... 10/17 16:56
11F:→ superlubu:尤其我是由 1.2 开始的... Set 和 List 的问题很大 XD 10/17 16:57
12F:→ pelicanper:超好用的啊,有法拉利开为甚麽要骑脚踏车? 10/17 16:58
13F:→ OrzOGC: 因为还没考驾照 10/17 16:59
14F:→ superlubu:因为我专攻 task scheduling, 资源好重要 XDDDDD 10/17 16:59
15F:→ pelicanper:对我来说完成的时间,正确性,Debug的难度都是要考虑的 10/17 17:08
16F:推 JazzChen:又学到了新方法好棒!! 10/17 17:08
17F:推 gmoz:看环境啦 用现在等级的PC跑猜数字 用开发速度最快的就好了 10/18 16:36
18F:推 lovelycateye:我觉得猜数字或英文这方法很好啊,又不是猜中文(死) 10/19 09:32