gpt4 book ai didi

java - 字符串输入被忽略

转载 作者:行者123 更新时间:2023-12-01 08:47:15 25 4
gpt4 key购买 nike

这是一个计算器程序。当我这样写时:

public static void main(String[] args) {

Scanner input = new Scanner (System.in);
int x1 = input.nextInt();
int x2 = input.nextInt();
String x3 = input.nextLine();

if ("+".equals(x3)){
int r= x1 + x2;
System.out.println(r);
} else if ("-".equals(x3)) {
int r= x1 - x2;
System.out.println(r);
} else if ("*".equals(x3)) {
int r= x1 * x2;
System.out.println(r);
} else if ("/".equals(x3)) {
int r= x1 / x2;
System.out.println(r);
} else if ("%".equals(x3)) {
int r= x1 % x2;
System.out.println(r);
} else {
System.out.println("invalid input");
}
}

程序不会等待第三个输入。当我尝试为第三个输入单独创建另一个扫描仪对象时,代码运行良好。此外,当我尝试切换输入顺序以便首先输入字符串时,代码运行良好。谁能告诉我发生了什么事吗?

最佳答案

我通过添加一个将 String 解析为 int 的函数来解决这个问题。您需要使用 input.nextLine(),将其与 Scanner 一起传递给函数,然后使用该值。如果字符串不是数字,它将要求另一个输入。

private static int parseInt(String s, Scanner input) {
try {
return Integer.parseInt(s);
} catch(NumberFormatException e) {
return parseInt(input.nextLine(), input);
}
}

你可以像这样使用它:

public static void main(String[] args) {
Scanner input = new Scanner (System.in);
int x1 = parseInt(input.nextLine(), input);
int x2 = parseInt(input.nextLine(), input);
String x3 = input.nextLine();

if ("+".equals(x3)){
int r= x1 + x2;
System.out.println(r);
} else if ("-".equals(x3)) {
int r= x1 - x2;
System.out.println(r);
} else if ("*".equals(x3)) {
int r= x1 * x2;
System.out.println(r);
} else if ("/".equals(x3)) {
int r= x1 / x2;
System.out.println(r);
} else if ("%".equals(x3)) {
int r= x1 % x2;
System.out.println(r);
} else {
System.out.println("invalid input");
}
}

关于java - 字符串输入被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42601458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com