要求:
计算机随机生成一个2位数(00~99),让玩家去猜这个数字,只要玩
家猜的数字不正确,程序继续,直至用户猜对。
为了让程序更有趣,只要玩家猜的数字不正确,计算机就给出提示,告诉玩家他猜出的数字有多少位包含在准确答案中。
数位的顺序不影响匹配的个数,例如,如果正确答案是24,而玩家猜测的是25,计算机会提示有一个数位匹配。如果玩家继续猜的是42,计算机会提示有2个数位匹配;如果,玩家给出的数字的2个数位相同,比如22,那么计算机的提示仍然是1个数位匹配。
程序能处理用户的无效输入:
·非数字
·数字在00~99范围之外
import java.util.*; public class number_guess_2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); Random rand = new Random(); int number = rand.nextInt(100); // 生成0-99之间的随机数 System.out.print("这是一个猜数字游戏,请输入一个0-99的两位数字"); int guess = getGuess(in); // 用getGuess()获取值来实现无效输入的过滤 int numGuesses = 1; while (guess != number) { int numMatches = matches(number,guess); System.out.println("猜错啦,您的答案中有"+numMatches+"个数字与正确答案相符"); System.out.print("请重新输入一个0-99的两位数字"); guess = in.nextInt(); numGuesses++; } System.out.println("回答正确,共回答"+numGuesses+"次"); } // 处理用户的无效输入 public static int matches(int number,int guess) { int numMatches = 0; if(guess/10 == number/10 || guess/10 == number%10) { numMatches++; } if(guess/10 != number%10 && guess%10 == number%10 || guess%10 == number/10) { numMatches++; } return numMatches; } public static int getGuess(Scanner in) { int guess = getInt(in,"请输入一个0-99的两位数字"); while(guess <= 0 || guess >= 100) { System.out.println("您输入的数字不在范围内,请重新输入。"); guess = getInt(in,"请输入一个0-99的两位数字"); } return guess; } public static int getInt(Scanner in,String prompt) { System.out.print(prompt); while(!in.hasNextInt()) { in.next(); System.out.println("您输入的不是数字,请重新输入。"); System.out.print(prompt); } return in.nextInt(); } }
测试结果如图:
更多推荐
java(生成随机数)用户猜数字
发布评论