黑马程序员技术交流社区

标题: 猜数游戏,求改善。 [打印本页]

作者: 王广亚    时间: 2013-8-26 01:14
标题: 猜数游戏,求改善。
本帖最后由 王广亚 于 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>
复制代码

作者: gulup    时间: 2013-8-26 02:32
拥有main方法的类相当于一个客户端,不要在main方法中书写过多的代码,可以把上面main方法内的的逻辑提取为一个方法。
再新建一个client类作为程序入口。

作者: 王广亚    时间: 2013-8-26 08:21
gulup 发表于 2013-8-26 02:32
拥有main方法的类相当于一个客户端,不要在main方法中书写过多的代码,可以把上面main方法内的的逻辑提取为 ...

嗯,说的极是。修改。
作者: 代文娟    时间: 2013-8-26 08:42
int num = (int)Math.random()*100+1;这句话少写了一个括号应该是这样写int num = (int)(Math.random()*100)+1
作者: 王广亚    时间: 2013-8-26 08:47
代文娟 发表于 2013-8-26 08:42
int num = (int)Math.random()*100+1;这句话少写了一个括号应该是这样写int num = (int)(Math.random()*10 ...

恩恩额,嘿嘿,有点小马虎。谢谢提醒。
作者: 张俊生    时间: 2013-8-26 09:01
如果问题已解决请改为已解决,谢谢合作,保持队形
作者: 王广亚    时间: 2013-8-26 10:02
张俊生 发表于 2013-8-26 09:01
如果问题已解决请改为已解决,谢谢合作,保持队形

嗯,谢谢提醒。记住了。等主要问题解决了就改为以解决




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2