Java 为什么是“如果条件”;(skaner.next()!=int)";你认为错了吗?

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

我想做一个条件,如果有人输入一个单词,程序将返回“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 (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()
返回的是整数值,而不是布尔值。使用此答案中的代码到底有什么问题?请不要编辑您的帖子以删除您所询问的问题。