Почему если условие "(skaner.next ()! = Int)" подсвечено как неправильное? - PullRequest
0 голосов
/ 31 января 2020

Я хочу сделать условие, если кто-то введет слово, программа вернет «Это строка», если это целое число, программа вернет «Это целое число». Что не так с моим условием 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();


    }
}

1 Ответ

0 голосов
/ 31 января 2020

Здесь 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();
    }
}

Проверьте эту ссылку для справки.

...