Java 为什么是“如果条件”;(skaner.next()!=int)";你认为错了吗?
我想做一个条件,如果有人输入一个单词,程序将返回“That is a string”,如果是整数,程序将返回“That is a integer”。我的if状况有什么问题Java 为什么是“如果条件”;(skaner.next()!=int)";你认为错了吗?,java,if-statement,Java,If Statement,我想做一个条件,如果有人输入一个单词,程序将返回“That is a string”,如果是整数,程序将返回“That is a integer”。我的if状况有什么问题 package folder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner skaner = new Scanner(System.in); while
package folder;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner skaner = new Scanner(System.in);
while (skaner.hasNext()){
if (skaner.next() != int) {
System.out.println("That is a string" + skaner.next());
}
else {
System.out.println("That is an integer " + skaner.next());
}
}
skaner.close();
}
}
此处skaner.next()
将返回一个String
对象,而int
是一个基本数据类型,因此两者不可比较。要检查skaner.next()
返回的令牌是否为int
,可以使用Integer.parseInt(skaner.next())
将String
转换为int
,并在输入不是有效整数时抛出NumberFormatException
package folder;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner skaner = new Scanner(System.in);
while (skaner.hasNext()){
String x = skaner.next();
try {
int y = Integer.parseInt(x);
System.out.println("That is an integer " + y);
}
catch(NumberFormatException e) {
System.out.println("That is a string " + x);
}
}
skaner.close();
}
}
检查引用。好的,我已经更新了它,但在像这样更改if语句之后,它仍然显示错误。我也尝试过使用
Integer.parseInt(skaner.next())==true
,但它也有错误,因为它的拼写是“scanner”,带有c。“skaner”是非英语形式的scanner。这就是我调用变量的方式,因此,您必须捕获异常并单独处理它并不重要。我已经用正确的代码更新了答案。@MXtrocin您的更新仍然无效,因为Integer.parseInt()
返回的是整数值,而不是布尔值。使用此答案中的代码到底有什么问题?请不要编辑您的帖子以删除您所询问的问题。