Java 猜数 升级版
背景
小帅哥给我升级题目难度咯(尽管还是简单的)
题目简述:
生成一个0-99的随机数randomNum,有三个人来猜数,分别为A、B、C;A猜不中,则B猜,B猜不中,则C猜,C猜不中又回到A猜,如此循环,直至猜中,并输出是谁猜中的。
思路
第一步,生成一个0-99的随机数randomNum;
第二步,定义三个人A,B,C;
第三步,首先是A先猜数,判断A输入的数是否和随机数randomNum相等,相等则直接输出结果,不相等则接着由B猜数,相等则输出,不等则由C猜数,不相等则由A猜数,相等则输出,如此循环,直至猜中。
拓展:既然能三个人猜数,要是四个呢,五个呢(请参考代码二)
代码块
代码一,对应测试结果为图一
import java.util.Scanner;
public class GuessingNumber {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
System.out.println("A input: ");
// 定义三个人猜数:a、b、c
int a = scan.nextInt(),b = -1,c = -1;
// 生成随机数
int randomNum = (int)(Math.random()*99);
// 范围
int leftNum = 0,rightNum = 99;
// 输入的数
int num = a;
while(num != randomNum){
if (num > randomNum && num < rightNum){
rightNum = num;
System.out.println(leftNum + "-" + num);
} else if(num < randomNum && num > leftNum){
leftNum = num;
System.out.println(num + "-" + rightNum);
} else {
System.out.println(leftNum + "-" + rightNum);
}
if (num == a) {
System.out.println("B input: ");
b = scan.nextInt();
num = b;
} else if (num == b) {
System.out.println("C input: ");
c = scan.nextInt();
num = c;
} else if (num == c) {
System.out.println("A input: ");
a = scan.nextInt();
num = a;
}
}
if (num == a) {
System.out.println("Congratulations A, you guessed it.");
} else if (num == b) {
System.out.println("Congratulations B, you guessed it.");
} else if (num == c) {
System.out.println("Congratulations C, you guessed it.");
}
}
}
代码二(优化后的版本)对应图二
import java.util.*;
public class GuessingNumber {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
Random rm = new Random();
// 生成随机数,count为猜数人数组下标
int randomNum = rm.nextInt(100), count = 0;
// 猜数人数组
String people[] = {"peopleA", "peopleB", "peopleC"};
// 左右范围,当前输入数
int leftNum = 0,rightNum = 99, currentNum;
// 当前猜数人
String nowPlayer;
System.out.println("game start...");
while(true){
System.out.println(leftNum + "-" + rightNum);
nowPlayer = people[count];
System.out.println(nowPlayer + " input: ");
currentNum = scan.nextInt();
if (currentNum == randomNum){
break;
} else if (currentNum > randomNum && currentNum < rightNum){
rightNum = currentNum;
} else if (currentNum < randomNum && currentNum > leftNum){
leftNum = currentNum;
}
count = (count + 1) % (people.length);
}
System.out.println("Congratulations " + nowPlayer + ", you guessed it.");
}
}
测试结果
图一:
图二: