Как вы можете сделать десятичный ввод действительным?
Я написал этот код, однако каждый раз, когда я ввожу десятичное значение, он не работает. Как я могу заставить этот код работать, даже если я введу десятичное значение? Например, если я введу значение 7,5, должно отобразиться, что "стоимость доставки составляет $9,45"
import java.util.Scanner;
public class IfElse {
public static void main(String[] args) {
int marksObtained;
Scanner input = new Scanner(System.in);
System.out.println("Please enter a package weight in pounds:");
marksObtained = input.nextInt();
if (marksObtained>20)
{
System.out.println("The package is too heavy to be shipped");
}
else if (marksObtained>10)
{
System.out.println("The shipping cost is $12.50");
}
else if (marksObtained>3)
{
System.out.println("The shipping cost is $9.45");
}
else if (marksObtained>1)
{
System.out.println("The shipping cost is $4.95");
}
else if (marksObtained>0)
{
System.out.println("The shipping cost is $2.95");
}
else if (marksObtained<0)
{
System.out.println("The weight must be greater than zero");
}
}
}
4 ответа
Использование nextDouble
метод, как показано ниже
public static void main(String[] args) {
double marksObtained;
System.out.println("Please enter a package weight in pounds:");
Scanner input = new Scanner(System.in);
marksObtained = input.nextDouble();
input.close();
if (marksObtained > 20) {
System.out.println("The package is too heavy to be shipped");
} else if (marksObtained > 10) {
System.out.println("The shipping cost is $12.50");
} else if (marksObtained > 3) {
System.out.println("The shipping cost is $9.45");
} else if (marksObtained > 1) {
System.out.println("The shipping cost is $4.95");
} else if (marksObtained > 0) {
System.out.println("The shipping cost is $2.95");
} else if (marksObtained < 0) {
System.out.println("The weight must be greater than zero");
}
}
И закройте сканер, это хорошая практика.
nextInt()
работает только для целых чисел. использование nextDouble()
Ты можешь использовать nextFloat
или же nextDouble
Scanner s = new Scanner (System.in);
float a = s.nextFloat ();
System.out.println(a);
С помощью nextInt
будет ожидать ввода значения int и выдаст java.util.InputMismatchException
если int
не введен
Посмотрите на код, который вы используете для чтения ввода:
int marksObtained;`enter code here`
marksObtained = input.nextInt();
Ключевым моментом здесь является понимание того, что int
может представлять только целые числа, а не десятичные числа. Для десятичных дробей вам нужно использовать двойные или плавающие числа. Например:
double marksObtained = input.nextDouble();
Я предлагаю вам вернуться и просмотреть основные типы данных, которые поддерживает Java. Вам также следует ознакомиться с документацией для класса Scanner, а также с остальной документацией для стандартных API Java.