题目要求:随机生成1-100的数字,玩家竞猜,如果猜的大于随机数,控制台提示大了;若猜的小于随机数,提示小了。最多只有8次竞猜机会,如果所输入的数据不在1-100范围之内,则减少2次机会,如果输入的不是数字字符,则减少3次机会
代码如下:
import java.util.Random;
import java.util.Scanner;
public class GuessingTest {
static int times = 8;
public static void main(String[] args) {
System.out.println("请输入一个1-100的数字(您最多有8次机会):");
Scanner sc = new Scanner(System.in);
Random r = new Random();
int data = r.nextInt(100)+1;
while(true){
String dataIn = sc.next();
boolean b1 = dataIn.matches("[0-9]+");
boolean b2 = (dataIn.matches("[0-9]{1,2}")&&(!dataIn.equals("0"))) || dataIn.equals("100") ;
times--;
//输入符合要求
if(b2 == true){
int datain = Integer.parseInt(dataIn);
if((times) <= 0){
noChance();
}
if(datain == data){
System.out.println("恭喜你,答对了!");
System.exit(0);
}else if(datain >data){
System.out.println("大了,请输小点,您还有"+times+"次机会");
}else if(datain < data){
System.out.println("小了,请输大点,您还有"+times+"次机会");
}
}
//输入字符不符
if(b1 == false){
times=times-3;
if((times) <= 0){
noChance();
}
System.out.println("您输入不符要求,机会减3次,您还有"+times+"次机会,请重新输入:");
}
//输入数字但不在1-100之内
if(b1 == true && b2 == false){
times=times-2;
if((times) <= 0){
noChance();
}
System.out.println("你的输入不在1-100之间,机会减2次,您还有"+times+"次机会,请重新输入:");
}
}
}
public static void noChance(){
System.out.println("您已经没有机会了!");
System.exit(0);
}
}