温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - Why if condition "(skaner.next() != int)" highlights as wrong?
if-statement java

java - 为什么条件“(skaner.next()!= int)”突出显示为错误?

发布于 2020-03-31 23:15:19

我想做一个条件,如果有人输入一个单词,程序将返回“那是一个字符串”,如果它是整数,则程序将返回“那是一个整数”。我的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();


    }
}

查看更多

提问者
MXtrocin
被浏览
65
Abhinav Goyal 2020-02-02 13:24

这里skaner.next()将返回一个String对象,而对象int是原始数据类型,因此两者不可比较。要检查by返回的令牌skaner.next()是否为int,可以使用Integer.parseInt(skaner.next())转换String为,intNumberFormatException在输入不是有效整数时抛出

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();
    }
}

检查此链接以供参考。