Re: [問題] 如何寫成一個猜數字的遊戲

看板java作者 (憧)時間13年前 (2012/10/16 14:36), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串4/7 (看更多)
身為一個學習程式設計的人,聽到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

10/16 14:52, , 1F
邊做邊想也是不錯的啊
10/16 14:52, 1F

10/16 15:13, , 2F
不斷砍掉重練也是進步的方式啦..... 只是比較累,但是基礎
10/16 15:13, 2F

10/16 15:13, , 3F
倒也不是否定邊做邊想的做法啦,只是我這麼做的下場都
10/16 15:13, 3F

10/16 15:14, , 4F
會比較好,而且會學到很多 怪/爛 招
10/16 15:14, 4F

10/16 15:15, , 5F
是...(拭淚。不過經驗值不少就是,雖然是用時間換的..
10/16 15:15, 5F

10/16 15:18, , 6F
而且有時候會發現暴力法是最省時的寫法...
10/16 15:18, 6F

10/16 16:42, , 7F
通常暴力寫法後過5分鐘.google一下就找到相關的API了...XD
10/16 16:42, 7F

10/16 18:50, , 8F
還好我都是找不到API才用暴力法解的XD
10/16 18:50, 8F
文章代碼(AID): #1GVG28de (java)
討論串 (同標題文章)
文章代碼(AID): #1GVG28de (java)