while(true){ Scanner reader = new Scanner(System.in); Random random = new Random(); System.out.println("给你一个1至100之间的整数,请猜测这个数"); int realNumber = random.nextInt(100)+1; //random.nextInt(100)是[0,100)中的随机整数 int yourGuess = 0; System.out.print("输入您的猜测:"); yourGuess = reader.nextInt(); while(yourGuess!=realNumber) //循环条件 { if(yourGuess>realNumber) //猜大了的条件代码 { System.out.print("猜大了,再输入你的猜测:"); yourGuess = reader.nextInt(); } else if(yourGuess<realNumber) //猜小了的条件代码 { System.out.print("猜小了,再输入你的猜测:"); yourGuess = reader.nextInt(); } } System.out.println("猜对了!"); Scanner scan1 = new Scanner(System.in); System.out.println("您需要继续猜吗,需要请输入y,退出请输入n"); String answer = scan1.next(); if(?){ break; } else{ continue; } }
时间: 2023-06-15 10:06:58 浏览: 513
您需要在if语句中加入判断条件,来确定用户是否需要继续猜数。您可以使用answer变量来判断用户输入的字符,如果是'y',则继续循环;如果是'n',则跳出循环。具体代码如下:
if(answer.equals("n")){
break;
}
else if(answer.equals("y")){
continue;
}
相关问题
public class Anli1 { public static void main(String[] args) { Scanner n = new Scanner(System.in); System.out.println("输入机票价格:"); double u = n.nextDouble(); Scanner o = new Scanner(System.in); System.out.println("输入月份:"); int m = o.nextInt(); Scanner p = new Scanner(System.in); System.out.println("舱位:"); String j = p.next(); double res = jp(u, m, j); System.out.println("机票价格:" + res); }用户键盘输入类型不对,怎么判断并让用户重新输入
在这个代码中,如果用户输入的类型不对,可以使用try-catch语句来捕获异常,并提示用户重新输入。具体的做法如下:
```java
public static void main(String[] args) {
Scanner n = new Scanner(System.in);
double u = 0;
boolean flag = true;
while (flag) {
try {
System.out.println("输入机票价格:");
u = n.nextDouble();
flag = false;
} catch (InputMismatchException e) {
System.out.println("机票价格输入类型不正确,请重新输入!");
n.nextLine(); // 清空缓存
}
}
Scanner o = new Scanner(System.in);
int m = 0;
flag = true;
while (flag) {
try {
System.out.println("输入月份:");
m = o.nextInt();
flag = false;
} catch (InputMismatchException e) {
System.out.println("月份输入类型不正确,请重新输入!");
o.nextLine(); // 清空缓存
}
}
Scanner p = new Scanner(System.in);
String j = "";
System.out.println("舱位:");
j = p.next();
double res = jp(u, m, j);
System.out.println("机票价格:" + res);
}
```
上面的代码中,我们使用了while循环和flag变量来保证用户重新输入,直到输入类型正确为止。当用户输入类型不正确时,会抛出InputMismatchException异常,我们可以使用catch语句来捕获这个异常,并提示用户重新输入。在重新读取输入之前,需要先清空缓存,否则会出现死循环。使用scanner.nextLine()方法可以清空缓存,然后再使用scanner.nextDouble()或scanner.nextInt()方法重新读取输入。
private static void gethb(int[] hb) { Scanner s = new Scanner(System.in); Random p = new Random(hb.length-1); for (int i = 0; i < hb.length; i++) { System.out.println("输入任意内容参与请红包"); s.next(); int z= p.nextInt(); hb[z]=0; System.out.println(Arrays.toString(hb)); } }报错
在这段代码中,Random对象的构造函数参数应该是hb.length,而不是hb.length-1。因为nextInt(int n)方法的参数是一个非负整数,代表生成随机数的范围,其返回值是一个介于0(包括)和n(不包括)之间的随机整数。如果将hb.length-1作为参数传递,则可能会出现数组下标越界的情况。
另外,在获取随机数后,应该先判断该随机数是否已经被使用过,如果已经被使用过,则应该重新生成一个新的随机数,直到得到一个未被使用过的随机数。
还有一个可能导致错误的点是,当hb数组中所有元素都已经被设置为0时,程序将无限循环,因为无法再得到一个未被使用过的随机数。因此,在循环内部应该添加一个判断,当所有红包都已经被领取完毕后,退出循环。
下面是修改后的代码:
```java
private static void gethb(int[] hb) {
Scanner s = new Scanner(System.in);
Random p = new Random(hb.length);
int count = 0;
while (count < hb.length) {
System.out.println("输入任意内容参与领取红包");
s.next();
int z = p.nextInt(hb.length);
if (hb[z] != 0) {
hb[z] = 0;
count++;
}
System.out.println(Arrays.toString(hb));
}
}
```
阅读全文