作者AtarashiAko (憧)
站內java
標題Re: [問題] 如何寫成一個猜數字的遊戲
時間Tue Oct 16 14:36:54 2012
身為一個學習程式設計的人,聽到67個if,我也驚艷了....
:
: 小弟第一次發文,犯了新手常犯的錯誤...
:
: 在此默默貼上小弟的落落長if式:
:
: import java.util.Scanner;
:
: public class guessnumber {
: public static void p1() {
: .
: .
: .
: } //文字敘述
: public static void p2() {
: Scanner sc = new Scanner(System.in);
: int a = sc.nextInt();
: int b = sc.nextInt();
: int c = sc.nextInt();
: int d = sc.nextInt(); //小弟不才,不知道要怎麼讓他變成一行輸入
: if ( a == 4 && b == 7 && c == 2 && d == 8 ) {
: //小弟真的是太沒有sence了...不知道要怎麼random設計..只好用設定的
不是sence,請找本書或者拜g神就會有你想要的random了
要不要一行輸入,那個後面再處理無妨,不影響猜數字的核心
在這裡,想先問原po,你在玩猜數字時,你的判斷流程是如何呢?
假設答案是4728好了,當猜的人猜出了8325這個數字
你是如何判斷出幾A幾B?
按照你的程式來推斷,你是先看是不是4xxx這種情況的1A(xxx不和答案相同)
不是的話再看其他種1A,接著2A……
或許原po是這種判斷法?
不過,就我所知道的解法,
大部分的人是把8拿去和4728比較,
發現8的位置不對,是1B
接著,比3,還是1B
再來比2,1A1B
最後比5,結果就是1A1B
我再問一個問題好了,為什麼原PO在判斷第一個數字時要考慮後面3個數字呢
: .
: .
: .
: }
: if ( a != 4 && b != 7 && c != 2 && d != 8 ) {
: .
: .
: .
: } //都錯時
: if ( a == 4 && b != 7 && c != 2 && d != 8 ) {
: System.out.println("1A");
: } //1A
: .
: .
: .
: //接下來以此類推總共67個...
:
: 小弟也曾想過不要這麼麻煩,直接使用另一個稍微偷懶的方法:
: 試驗效果驚人,完全又是前面的翻版....
:
: 摁...相信大大會想說小弟傻了
: 也沒錯,小弟除了想完邏輯式之後傻住之後也不只想過一遍這樣的事情....
: 所以求大大幫幫忙!
:
: 感激不盡阿!
原PO的問題倒是比較像演算法的問題
把你解猜數字的流程再想清楚一些吧,不是有靈感(?)就開始動手寫
因為除了少數天賦異秉的人之外,這樣做的下場大部分都是砍掉重練
很不幸的,我就是常砍掉重練的那群OTL
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.126.37.19
→ end81235:邊做邊想也是不錯的啊 10/16 14:52
推 LaPass:不斷砍掉重練也是進步的方式啦..... 只是比較累,但是基礎 10/16 15:13
→ AtarashiAko:倒也不是否定邊做邊想的做法啦,只是我這麼做的下場都 10/16 15:13
→ LaPass:會比較好,而且會學到很多 怪/爛 招 10/16 15:14
→ AtarashiAko:是...(拭淚。不過經驗值不少就是,雖然是用時間換的.. 10/16 15:15
→ AtarashiAko:而且有時候會發現暴力法是最省時的寫法... 10/16 15:18
→ OrzOGC:通常暴力寫法後過5分鐘.google一下就找到相關的API了...XD 10/16 16:42
→ AtarashiAko:還好我都是找不到API才用暴力法解的XD 10/16 18:50