#java
#java
Вопрос:
Итак, я пытаюсь запустить эту программу, которая будет проверять каждый ввод, чтобы убедиться, что ввод соответствует правильному типу, int , double и boolean . Однако двойное значение вызывает у меня проблемы. hasnextDouble принимает значение int, а переменная превращает его в double . Буду признателен за любую помощь, которую я могу получить для решения этой проблемы, наряду с объяснением того, почему, я не просто хочу получить ответ, я хочу понять.
import java.util.Scanner;
public class TestValidInput
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int anInt = 0;
double aDouble = 0.0;
boolean aBoolean = false;
System.out.printf("%nEnter an integer: ");
while(!input.hasNextInt())
{
input.next();
System.out.printf("%nYou must only enter an integer: ");
}
anInt = input.nextInt();
System.out.printf("%n%d%n", anInt);
System.out.printf("%nEnter a double: ");
while(!input.hasNextDouble())
{
input.next();
System.out.printf("%nYou must only enter a double: ");
}
aDouble = input.nextDouble();
System.out.printf("%n%f%n", aDouble);
System.out.printf("%nEnter a true or a false: ");
while(!input.hasNextBoolean())
{
input.next();
System.out.printf("%nYou must only enter a TRUE or FALSE: ");
}
aBoolean = input.nextBoolean();
System.out.printf("%n%b%n", aBoolean);
input.close();
System.exit(0);
}
}
Ответ №1:
Объяснение, почему
с объяснением, почему
Поскольку значение int может быть представлено как значение double, в java целочисленное значение может быть неявно преобразовано в double, но не наоборот:
double d = 1.0; // valid
double dd = 1; // valid
int i = 1; // valid
int ii = 1.0; // error
Как решить
Любая помощь, которую я могу получить, чтобы решить эту проблему
Добавьте проверку, что оно не в целочисленном формате:
while(!(input.hasNextDouble() amp;amp; !input.hasNextInt()))
Ответ №2:
Пространство double — это надмножество целых чисел, т. Е. И int может вписываться в double или интерпретироваться как таковой. если вам конкретно нужна десятичная точка в числе, вы должны проверить это вместо этого.
Комментарии:
1. Я ценю это, это был лакомый кусочек, который я забыл учесть.