如何在用户输入数字并按下输入(或其他内容)后运行if
else
语句?
public static void main(String[] args) {
System.out.println("please guess the number between 1 and 100.");
boolean run = true;
int y = 0;
Random ran = new Random();
int x = ran.nextInt(99);
while (run == true) {
Scanner scan = new Scanner(System.in).useDelimiter(" ");
// System.out.println(scan.nextInt());
y = scan.nextInt();
/*
* if(y > 0){ run = false; } else{ run = true; }
*/
if (y > x) {
System.out.println("Lower...");
} else if (y < x) {
System.out.println("Higher...");
} else if (y == x) {
System.out.println("Correct!");
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(0);
}
}
}
}
答案 0 :(得分:3)
您的代码按原样运行。只是你的输入需要用空格分隔。
如果您输入一个数字并按Enter键,则没有空格,并且由于您已将Scanner
设置为以空格分隔,因此它找不到任何内容。另一方面,如果您输入:
3 9
(3
[空格] 9
),您的扫描仪会选择3.您可能需要的是:
Scanner scan = new Scanner(System.in).useDelimiter("\n");
这样您的Scanner
会在您按Enter后读取一个数字。无论您以何种方式执行此操作,都需要在Scanner
周围进行一些错误处理以处理InputMismatchException
。
答案 1 :(得分:0)
我认为你的问题不是很清楚,考虑到代码的结构,以下更改似乎是合乎逻辑的:
else if (y == x) {
System.out.println("Correct!");
run = false;
}
当然只是if(run)
(一种好的风格)
答案 2 :(得分:0)
您的代码实际上并未生成1到100之间的数字(相反,介于0到98之间)。修复此错误并添加一些错误检查,您的代码变为:
import java.util.*;
public class HiLo {
public static void main(String[] args) {
int guess = 0, number = new Random().nextInt(100) + 1;
Scanner scan = new Scanner(System.in);
System.out.println("Please guess the number between 1 and 100.");
while (guess != number) {
try {
if ((guess = Integer.parseInt(scan.nextLine())) != number) {
System.out.println(guess < number ? "Higher..." : "Lower...");
}
else {
System.out.println("Correct!");
}
}
catch (NumberFormatException e) {
System.out.println("Please enter a valid number!");
}
catch (NoSuchElementException e) {
break; // EOF
}
}
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}