廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 7026 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
獨吾洋 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x140
分享: 轉寄此文章 Facebook Plurk Twitter 版主評分 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Java][精華] 如何精簡此猜數字程式<已解決>
Create an application called GuessingGame which simulates a simple number game where the computer picks a random number between 1 and 100 (inclusive) and the user must guess the number. The application will print the words HIGHER, LOWER or CORRECT after each guess. Here is an example run of the application (red indicates example user input):

Pick a number between 1 and 100.

The user will start off with 100 points. Each time a wrong guess is made, 1 point is subtracted from the point total.

程式執行時,在DOS視窗中:
Your guess: 5
HIGHER
Your guess: 57
HIGHER
Your guess: 99
LOWER
Your guess: 80
LOWER
..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被獨吾洋在2007-01-14 11:57重新編輯 ]

此文章被評分,最近評分記錄
財富:30 (by codeboy) | 理由: 自我成長摟..^^



獻花 x0 回到頂端 [樓 主] From:澳洲 | Posted:2007-01-05 12:43 |
boysxmen
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x4
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
import java.io.*;

public class Guess {
       public static void main(String[] args) {
              byte[] b = new byte[10];
              int g = 0;
              int index = 0;
              int x = 0;
              String sbuf = null;
              System.out.println("Pick a number between 1 and 100 :");
              while(true) {
                     try {
                            g = System.in.read();
                     }catch(IOException ex) {ex.printStackTrace();}
                     switch(g) {
                            case '\n':
                                   break;
                            case '\r':
                                   sbuf = new String(b, 0, index);
                                   x = Integer.parseInt(sbuf);
                                   if(x < 79) {
                                          System.out.println("Your Guess " + x + '\n' + "HIGHER" );
                                          index = 0;
                                          break;
                                   }else if(x > 79) {
                                          System.out.println("Your Guess " + x + '\n' + "LOWER");
                                          index = 0;
                                          break;
                                   }else {
                                          System.out.println("Your Guess " + x + '\n' + "CORRECT");
                                          index = 0;
                                          return;
                                   }
                            default:
                                   b[index++] = (byte)g;
                     }       
              }
       }
}

很简单的,关键是把输入转换成int 的过程,还有就是理解in.read是行缓冲的.


獻花 x1 回到頂端 [1 樓] From:陜西 | Posted:2007-01-07 18:21 |
boysxmen
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x4
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

你这个程序有几个基本的语法错误,所以不能Compile

1> 方法内部变量不能声明为private。
2> main()自身就是方法,不能在它内部又建立方法。
3> 方法内部的变量必须显式的初始化。
这段程序只作修改意义不大,根本无法达到期望的运行效果。建议重写,或参考2楼的代码,把答案改成随机数。基本实现不用变。


獻花 x1 回到頂端 [2 樓] From:陜西 | Posted:2007-01-09 20:04 |
獨吾洋 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x140
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用boysxmen於2007-01-9 20:04發表的 :
你这个程序有几个基本的语法错误,所以不能Compile

1> 方法内部变量不能声明为private。
2> main()自身就是方法,不能在它内部又建立方法。
3> 方法内部的变量必须显式的初始化。
.......

謝謝你的指導!

後來我自己跟隨著老師的範例成功的做出來
只是現在又有另外個小問題
請問我現在修改後的文章內容 程式如何化二為一呢?


獻花 x0 回到頂端 [3 樓] From:澳洲 | Posted:2007-01-10 17:44 |
boysxmen
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x4
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我机器上没有你的相关包,所以没办法运行,不过这样改可以compile通过。
  把你的Anwser类中的方法直接定义到GuessingGame中,不知道你是不是这个意思。
複製程式
import abr.srw.*;
import java.io.*;

public class GuessingGame{
       public static void main(String[] args) throws Exception{
              SimpleReader in       = new SimpleReader();
              SimpleWriter out = new SimpleWriter();
              
              int bet = 100;
              
              roll();
              
               while(bet > 0){
                      
                      out.print("Pick a random number between 1 to 100: ");
                     int guess = in.readInt();
                      
                     if(guess < getNum()){
                             bet= bet - 1;
                             out.println("Higher.");
                             out.println("Bet= " + bet); 
                             }
                      else if(guess > getNum()){
                             bet= bet - 1;
                             out.println("Lower.");
                             out.println("Bet= " + bet); 
                             }
                      else{
                             out.println("Correct! :)");
                             out.println("Bet= " + bet);
                             break;
                      }
               }
        }
        
        private static int num;
        
        public static void roll() {
              num = (int)(Math.random() * 100) + 1;
        }
       
        public static int getNum(){
              return num;
        }
}

此文章被評分,最近評分記錄
財富:50 (by codeboy) | 理由: 感謝提供喔..^^


獻花 x1 回到頂端 [4 樓] From:陜西 | Posted:2007-01-11 11:59 |
獨吾洋 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x140
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用boysxmen於2007-01-11 11:59發表的 :
我机器上没有你的相关包,所以没办法运行,不过这样改可以compile通过。
  把你的Anwser类中的方法直接定义到GuessingGame中,不知道你是不是这个意思。
[code]import abr.srw.*;
import java.io.*;

.......

是的
就是那個意思

成功了! 表情
謝謝

可以再請問一個問題嗎...
為什麼要在private int num; 和public void roll() 中間加 "static" ?


獻花 x0 回到頂端 [5 樓] From:澳洲 | Posted:2007-01-11 18:30 |
boysxmen
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x4
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

static 修饰的方法不需new出对象就可以直接调用,称为静态方法。


獻花 x1 回到頂端 [6 樓] From:陜西 | Posted:2007-01-11 19:25 |
獨吾洋 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x140
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用boysxmen於2007-01-11 19:25發表的 :
static 修饰的方法不需new出对象就可以直接调用,称为静态方法。

嗯嗯

了解了

謝謝你的解答

我真是受益匪淺 ^^


獻花 x0 回到頂端 [7 樓] From:澳洲 | Posted:2007-01-14 11:53 |
overing 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x55
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

補一下...
static加在屬性(類別變數)上面稱做 "靜態變數"
會由所有此類別產生之物件共用同一份資料


Zippy G2 600W
Intel C2Q Q9550
Gigabyte GA-X48-DQ6
Gigabyte GV-NX96T512H-B
G-skill pi 1100MHz 2Gx4
ACARD ANS-9010 32GB (Windows7 10sec boot!!)
WD 150GB(WD1500ADFD)/640GB(6400AASK)
獻花 x0 回到頂端 [8 樓] From:未知地址 | Posted:2008-07-03 01:29 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.054552 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言