Как вы можете сделать десятичный ввод действительным? - PullRequest
0 голосов
/ 05 февраля 2019

Я написал этот код, однако каждый раз, когда я ввожу десятичное значение, он не работает.Как я могу заставить этот код работать, даже если я введу десятичное значение?Например, если я введу значение 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 ]

0 голосов
/ 05 февраля 2019

Используйте метод 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");
    }
}

И закройте сканер, это хорошая практика.

0 голосов
/ 05 февраля 2019

Посмотрите на код, который вы используете для чтения ввода:

int marksObtained;`enter code here`
marksObtained = input.nextInt();

Здесь необходимо понять, что int может представлять только целые числа, а не десятичные числа.Для десятичных дробей вам нужно использовать двойные или плавающие числа.Например:

double marksObtained = input.nextDouble();

Я предлагаю вам вернуться и просмотреть основные типы данных, которые поддерживает Java.Вам также следует ознакомиться с документацией для класса Scanner , а также с остальной документацией для стандартных API Java.

0 голосов
/ 05 февраля 2019

nextInt() работает только для целых чисел.Используйте nextDouble()

0 голосов
/ 05 февраля 2019

Вы можете использовать nextFloat или nextDouble

Scanner s = new Scanner (System.in);
float a = s.nextFloat ();
System.out.println(a);

Использование nextInt будет ожидать ввода значения int и будет выдавать java.util.InputMismatchException, если int не введено

...