猜数字游戏:
编写程序随即生成一个0-100之间的随机数。程序提示用户输入一个数字,不停猜测,直到猜对为止。最后输出猜测的数字,和猜测的次数。并且如果没有猜中要提示用户输入的值是大了还是小了。
思考:
如何生成1-100之间随机数?
(int)(Math.random()*100)+1;
如何提示用户输入数字,
Scanner sc=new Scanner(System.in);
int guessNum = sc.nextInt();
需要将随机数和用户输入的数字进行比较。
猜一次:
Scanner sc = new Scanner(System.in); int num = (int)(Math.random()*100)+1; System.out.println("请输入0-100之间整数"); int guessNum = sc.nextInt(); if (guessNum == num) { System.out.println("中啦"); } elseif (guessNum < num) { System.out.println("小啦"); } else { System.out.println("大了"); } |
这个程序只能才一次,如何让用户重复输入直到猜对?
可以使用while循环
publicstaticvoid main(String[] args) { int num = (int)(Math.random()*100)+1; Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入1-100之间整数"); int guessNum = sc.nextInt(); if (guessNum == num) { System.out.println("中啦"); } elseif (guessNum < num) { System.out.println("小啦"); } else { System.out.println("大了"); } } } |
该方案发现了问题,虽然实现了让用户不停的输入,但是即使猜中了程序也不会停止。
那么就需要控制循环次数了。也就是while() 括号中的条件表达式。当用户猜测的数和系统生成的数字不相等时,就需要继续循环。
int num = (int)(Math.random()*100)+1; Scanner sc = new Scanner(System.in);
int guessNum = -1; while (guessNum != num) { System.out.println("请输入1-100之间整数"); guessNum = sc.nextInt(); if (guessNum == num) { System.out.println("中啦"); } elseif (guessNum < num) { System.out.println("小啦"); } else { System.out.println("大了"); } } |
为什么将guessNum初始化值为-1?因为如果初始化为0到100之间程序会出错,因为可能是要猜的数。
1:首先程序生成了一个随机数
2:用户输入一个数字
3:循环检查用户数字和随机数是否相同,知道相同位置,循环结束