A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王广亚 高级黑马   /  2013-8-26 01:14  /  1000 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王广亚 于 2013-8-27 15:42 编辑
  1. <p> </p><p>
  2. import java.util.InputMismatchException;
  3. import java.util.Scanner;</p><p>public class GuessNumber {
  4.          static GuessNumber GN=new GuessNumber();
  5.                 /*获取随机数*/
  6.         public int randomNumber(){
  7.                 int num = (int)(Math.random()*100+1);//为什么在我机器上每次运行出来的随机数都是1呢?求改善。在戴文娟同学的提醒下已解决
  8.                 return num;               
  9.         }
  10.                 /*用户输入猜的数字*/
  11.         public int guess()throws InputMismatchException{//还有就是虽然这个异常是RuntimeException的子类,但是我还是想用上这个异常处理。
  12.                 Scanner sc = new Scanner(System.in);
  13.             int i = sc.nextInt();
  14.                 return i;                 
  15.         }
  16.        public void client(){
  17.         int numberuder;
  18.                 System.out.println("猜数游戏开始,请猜出1——100之间的一个整数?");              
  19.                 int numberSystem=GN.randomNumber();
  20.                 try{
  21.                  numberuder=GN.guess();
  22.                 }
  23.                 catch(InputMismatchException e){
  24.                         System.out.println("您输入的不是数字,请输入数字");
  25.                         numberuder =GN.guess();
  26.                 }
  27.                 while(numberSystem!=numberuder){
  28.                         if(numberSystem>numberuder)
  29.                                 System.out.println("您猜的数小了,请再猜:");
  30.                         if(numberSystem<numberuder)
  31.                                 System.out.println("您猜的数大了,请再猜:");
  32.                         try{
  33.                             numberuder=GN.guess();
  34.                            }
  35.                        catch(InputMismatchException e){
  36.                             System.out.println("您输入的不是数字,请输入数字");//我想让他只要输入的不是数字就重新输入,而不是像这样只可以重输一次,怎么修改?</p><p>                                                                             //还有我知道这里的代码复用性有点差,因为上面已经有一段同样的代码了。
  37.                             numberuder =GN.guess();
  38.                             }               
  39.                 }
  40.                 System.out.println("恭喜您猜对了:");
  41.            }
  42.         public static void main(String[] args) {
  43.                 GN.client();
  44.         }
  45. }
  46. </p><p> </p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
拥有main方法的类相当于一个客户端,不要在main方法中书写过多的代码,可以把上面main方法内的的逻辑提取为一个方法。
再新建一个client类作为程序入口。

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
gulup 发表于 2013-8-26 02:32
拥有main方法的类相当于一个客户端,不要在main方法中书写过多的代码,可以把上面main方法内的的逻辑提取为 ...

嗯,说的极是。修改。
回复 使用道具 举报
int num = (int)Math.random()*100+1;这句话少写了一个括号应该是这样写int num = (int)(Math.random()*100)+1

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
代文娟 发表于 2013-8-26 08:42
int num = (int)Math.random()*100+1;这句话少写了一个括号应该是这样写int num = (int)(Math.random()*10 ...

恩恩额,嘿嘿,有点小马虎。谢谢提醒。
回复 使用道具 举报
如果问题已解决请改为已解决,谢谢合作,保持队形
回复 使用道具 举报
张俊生 发表于 2013-8-26 09:01
如果问题已解决请改为已解决,谢谢合作,保持队形

嗯,谢谢提醒。记住了。等主要问题解决了就改为以解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马