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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心弦上的景致 中级黑马   /  2013-1-9 02:20  /  1155 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.InputMismatchException;
  2. import java.util.Scanner;

  3. public class RandomTest {
  4.         public static void main(String[] args) {
  5.                 int number = (int) (Math.random() * 100) + 1;
  6.                 int count = 0;
  7.                 while (true) {
  8.                         try {
  9.                                 Scanner sc = new Scanner(System.in);
  10.                                 System.out.println("请输入1-100之间的数据:");
  11.                                 int guessNumber = sc.nextInt();
  12.                                 count++;
  13.                                 if (guessNumber > number) {
  14.                                         System.out.println("你猜的数据" + guessNumber + "大了");
  15.                                 } else if (guessNumber < number) {
  16.                                         System.out.println("你猜的数据" + guessNumber + "小了");
  17.                                 } else {
  18.                                         System.out.println("恭喜你,"+count+"次就猜对了");
  19.                                         break;
  20.                                 }
  21.                         } catch (InputMismatchException ie) {
  22.                                 System.out.println("你输入的数据有误");
  23.                         }
  24.                 }
  25.         }
  26. }
复制代码

4 个回复

倒序浏览
本帖最后由 郭俊 于 2013-1-9 14:24 编辑

其实你这代码基本不用怎么优化了,只修改一处,不用每次建立接收对象就好
Scanner sc = new Scanner(System.in); 这句提到while语句外面来,先Scanner再写循环语句。
还有,你是不是要判断输入字母出现的死循环状况?
    public static void main(String[] args) {
        int number = (int) (Math.random() * 100) + 1;
        int count = 0;
        Scanner sc = new Scanner(System.in);
        while (true) {
            try {
                System.out.println("请输入1-100之间的数据:");
                String guessNumber = sc.nextLine();
                String regex="[0-9]+";
                count++;
                if (guessNumber.matches(regex) && Integer.parseInt(guessNumber )> number) {
                    System.out.println("你猜的数据" + guessNumber + "大了");
                    continue;
                } else if (guessNumber.matches(regex)&&Integer.parseInt(guessNumber ) < number) {
                    System.out.println("你猜的数据" + guessNumber + "小了");
                    continue;
                }else if(guessNumber.matches(regex)&&Integer.parseInt(guessNumber ) == number){
                    System.out.println("恭喜你,第" + count + "次就猜对了");
                    break;
                }else {
                    System.out.println("输入格式有错");
                }
            } catch (InputMismatchException ie) {
                System.out.println("你输入的数据有误");
            }
        }
    }
回复 使用道具 举报
本帖最后由 修心者 于 2013-1-9 13:52 编辑

可以设置一下,当输入game over时,结束游戏,
回复 使用道具 举报
将获取随机数的那句改为:int number = new Random().nextInt(101);
Scanner那句放到循环外面;每次才对后,可以提示玩家是不是继续玩下去(Y/N)
回复 使用道具 举报
本帖最后由 梁俊 于 2013-1-9 17:10 编辑
  1. import java.util.InputMismatchException;
  2. import java.util.Scanner;

  3. public class RandemoTest {
  4.         public static void main(String[] args) {
  5.                 int number = (int) (Math.random() * 100) + 1;
  6.                 int count = 0;
  7.                 System.out.println("请输入1-100之间的数据:");//<font color="Green">这句可以放外面</font>
  8.                 while (true) {
  9.                         try {
  10.                                 Scanner sc = new Scanner(System.in);//<font color="Green">这句不能放while外面,如果放外面 输入不是数字时,会是死循环的</font>
  11.                                 int guessNumber = sc.nextInt();
  12.                                 count++;
  13.                                 if (guessNumber > number) {
  14.                                         System.out.println("你猜的数据" + guessNumber + "大了");
  15.                                 } else if (guessNumber < number) {
  16.                                         System.out.println("你猜的数据" + guessNumber + "小了");
  17.                                 } else {
  18.                                         System.out.println("恭喜你,"+count+"次就猜对了");
  19.                                         break;
  20.                                 }
  21.                         } catch (InputMismatchException ie) {
  22.                                 System.out.println("你输入的数据有误");
  23.                         }
  24.                 }
  25.         }
  26. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马