Это программа, которая проверяет, какой вход доступен через входной поток System.in и решает, что тип данных переменной, чтобы сохранить его в код программы:.Как эта программа принимает данные, не зная ее тип данных?
import java.util.Scanner;
public class hasNextNumberDemo
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("Enter your Data :");
if(in.hasNextInt())
System.out.println("You have entered an Integer as : " + in.nextInt());
else if(in.hasNextFloat())
System.out.println("You have entered an Float Value as : " + in.nextFloat());
else if(in.hasNextDouble())
System.out.println("You have entered an Double Value as : " + in.nextDouble());
else
System.out.println("Token not an Integer or a real value.");
}
}
Здесь мы ясно, что данные могут быть приняты через несколько точек: in.nextInt()
или in.nextFloat()
или даже in.nextDouble()
, но всем предшествует инструкция для проверки типа данных ввода (который еще предстоит ввести [через hasNextInt()
или hasNextFloat()
или hasNextDouble()
]).
Мой вопрос в том, как программа определяет, какой тип данных следующий токен ДО ПЕРЕД принятием данных?
Далее, если hasNextInt()
или hasNextFloat()
или hasNextDouble()
инициирует ввод данных, а не in.nextInt()
или in.nextFloat()
или in.nextDouble()
, то как же не 3 подсказки для ввода данных для различных вызовов функции 3 (из hasNextInt()
и hasNextFloat()
и hasNextDouble()
)?
Я думаю, что эти методы 'has..' явно ждет какой-то вход, чтобы иметь для того, чтобы воздействовать на нее и решить, что тип данных, которые он является. –
Это не так. '.hasNextInt' для exmaple, просто проверяет, может ли пользовательский ввод интерпретироваться как Int ** после того, как пользователь предоставил вход **. Простой поиск google - [hasNextInt] (https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextInt()) – yonisha