我想做一个条件,如果有人输入一个单词,程序将返回“那是一个字符串”,如果它是整数,则程序将返回“那是一个整数”。我的if条件怎么了?
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
是原始数据类型,因此两者不可比较。要检查by返回的令牌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
但是也错了一方面,它用c拼写为“ scanner”。
“ skaner”是非英语形式的Scanner。这就是我如何调用变量的方式,所以这无关紧要
您必须捕获异常并单独处理它。我已使用正确的代码更新了答案。
@MXtrocin您的更新仍然无效,因为它
Integer.parseInt()
返回整数值,而不是布尔值。您在此答案中使用代码的确切问题是什么?