Re: [承上面]67個if的美學果然不適合小弟...
其實不用一直執著在"數字",用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
推
10/17 15:20, , 1F
10/17 15:20, 1F
推
10/17 15:52, , 2F
10/17 15:52, 2F
跑了一千遍,沒有重複...
重複的定義是字串內的四個字元不會重複,不是隨機產生的兩個字串不會重複
如果是後者的話,很抱歉這不是這段程式的目的
我放了註解在上面的程式碼裡面,參考一下,有問題可以討論
推
10/17 15:58, , 3F
10/17 15:58, 3F
推
10/17 16:07, , 4F
10/17 16:07, 4F
※ 編輯: pelicanper 來自: 27.252.6.71 (10/17 16:26)
推
10/17 16:29, , 5F
10/17 16:29, 5F
推
10/17 16:30, , 6F
10/17 16:30, 6F
→
10/17 16:32, , 7F
10/17 16:32, 7F
推
10/17 16:38, , 8F
10/17 16:38, 8F
沒有關係,寫程式最重要的就是做中學
質疑,挑戰,被挑戰,才是進步的動力
不過提到資源,在大的程式的確會有這個問題
但是這個程式應該是不會發生所謂佔資源,而且大腦也是一種資源
用很多條件式一旦哪裡出錯Debug就浪費了大腦細胞和時間的資源
有現成的Collection Framework可以用放棄實在可惜
不含輸出只要7行(可以變成5行),又有JAVA幫我檢查會不會重複,三分鐘可以解決
我是不太在乎電腦資源夠不夠用...
※ 編輯: pelicanper 來自: 27.252.6.71 (10/17 16:50)
推
10/17 16:45, , 9F
10/17 16:45, 9F
※ 編輯: pelicanper 來自: 27.252.6.71 (10/17 16:52)
→
10/17 16:56, , 10F
10/17 16:56, 10F
→
10/17 16:57, , 11F
10/17 16:57, 11F
→
10/17 16:58, , 12F
10/17 16:58, 12F
→
10/17 16:59, , 13F
10/17 16:59, 13F
→
10/17 16:59, , 14F
10/17 16:59, 14F
→
10/17 17:08, , 15F
10/17 17:08, 15F
推
10/17 17:08, , 16F
10/17 17:08, 16F
推
10/18 16:36, , 17F
10/18 16:36, 17F
推
10/19 09:32, , 18F
10/19 09:32, 18F
討論串 (同標題文章)
完整討論串 (本文為第 6 之 8 篇):