作者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
1F:→ end81235:边做边想也是不错的啊 10/16 14:52
2F:推 LaPass:不断砍掉重练也是进步的方式啦..... 只是比较累,但是基础 10/16 15:13
3F:→ AtarashiAko:倒也不是否定边做边想的做法啦,只是我这麽做的下场都 10/16 15:13
4F:→ LaPass:会比较好,而且会学到很多 怪/烂 招 10/16 15:14
5F:→ AtarashiAko:是...(拭泪。不过经验值不少就是,虽然是用时间换的.. 10/16 15:15
6F:→ AtarashiAko:而且有时候会发现暴力法是最省时的写法... 10/16 15:18
7F:→ OrzOGC:通常暴力写法後过5分钟.google一下就找到相关的API了...XD 10/16 16:42
8F:→ AtarashiAko:还好我都是找不到API才用暴力法解的XD 10/16 18:50