Q: не понимая процесс цикла? или возможны ли заявления? - PullRequest
0 голосов
/ 29 октября 2018

Я работаю над проектом, который предполагает создание калькулятора проката автомобилей.

Что я пытаюсь сделать, так это дойти до места, где меня спросят: «Какое транспортное средство вы хотели бы арендовать?». Если число, которое не находится в диапазоне 1-3, вводится, когда пользователю предлагается это сделать, то я хочу, чтобы программа вернулась к точке повторного запроса типа транспортного средства.

Аналогичным образом, при появлении запроса «Пожалуйста, введите количество дней аренды. (Пример; 3): «Я хочу разрешить пользователю вводить только положительные числа. например, не допускается ввод 3,1, 2,35, 0,35 -2 и т. д.

вот что я написал и моя попытка ответить на эти вопросы:

package inter;

import java.util.Scanner;

public class Inter {
    public static void main(String []args){
        int count=0;
        int days;
        double DailyFee=0, NontaxTotal, CarType, Total,FullTotal=0;
        Scanner in=new Scanner(System.in);
        System.out.println("If there are any customer press 1 else press 0");
        int cus=in.nextInt();

        while(cus!=0){
            count++;
            System.out.print("What vehical would you like to rent?\n");
            System.out.println("Enter 1 for an economy car\n");
            System.out.println("Enter 2 for a sedan car\n");
            System.out.println("Enter 3 for an SUV");
            CarType = in.nextInt();
            if (CarType == 1) {
                  DailyFee=31.76;
            }
            else if(CarType == 2) {
                  DailyFee=40.32;
            }
            else if(CarType == 3) {
                  DailyFee=47.56;
            }
            else if(CarType <= 0) {
                System.out.println("input is not a positive Integer ");
                System.out.println("Please enter a positive integer value: ");
                cus = 0; }
            else if(CarType > 4) {
                System.out.println("input is not a positive Integer ");
                System.out.println("Please enter a positive integer value: ");
                cus = 0; }

            System.out.print("Please enter the number of days rented. (Example; 3) : ");
            days = Integer.valueOf(in.nextLine());
            double x=days;
            NontaxTotal = (DailyFee * x);
            Total = (NontaxTotal * 1.06);
            FullTotal+=Total;

            System.out.printf("The total amount due is $ %.2f \n",Total);

            System.out.println("If there are any customer press 1 else press 0");
            cus=in.nextInt();
        }
        System.out.println("Count of customers : "+count);
        System.out.printf("Total of the Day : $ %.2f",FullTotal);
    }   
}

1 Ответ

0 голосов
/ 29 октября 2018

Позвольте мне помочь вам с этим, Я сделал этот код для вас, я попробовал, и это сработало это проверит, были ли оба ответа целыми числами (целыми числами) и больше нуля, а также проверит, был ли ответ в первую очередь числовым, так что если пользователь ответил с буквами, ему будет предложено повторить попытку Это мое предложение: в основном я использовал блок try-catch с InputMismatchException, чтобы определить, не был ли ответ целым числом (целым числом) или не был числовым, при каждом обнаружении ошибки я переключаю логическое значение на false и продолжаю цикл до тех пор, пока этот логический тип имеет значение false (я возвращаю логическое значение к true, прежде чем проверять иначе, если пользователь дает неправильный ответ, ему всегда будет предложено ответить, даже если он дал правильный ответ после)

    int vehicleType;
    int numberOfDays;
    double dailyFee;
    boolean validAnswer1 = false;
    boolean validAnswer2 = false;

    Scanner scan = new Scanner(System.in);

    while (validAnswer1 == false) {
        validAnswer1 = true;
        System.out.println("Choose Vehicle Type");
        try {
            vehicleType = scan.nextInt();
            if (vehicleType <= 0) {
                System.out.println("Number must be more than zero");
                validAnswer1 = false;
            } else if (vehicleType >= 4) {
                System.out.println("Number should be from 1 to 3");
                validAnswer1 = false;
            } else {
                if (vehicleType == 1) {
                    dailyFee=31.76;
                } else if(vehicleType == 2) {
                    dailyFee=40.32;
                }else if(vehicleType == 3) {
                    dailyFee=47.56;
                }
                while (validAnswer2 == false) {
                    validAnswer2 = true;
                    try {
                        System.out.println("Enter number of days rented ?");
                        numberOfDays = scan.nextInt();
                        if (numberOfDays <= 0) {
                            System.out.println("Number of days must be more than zero");
                            validAnswer2 = false;
                        } else {
                            // calculate your rent total here
                        }
                    } catch(InputMismatchException ex) {
                        System.out.println("Answer must be an Integer");
                        validAnswer2 = false;
                        scan.next();
                    }
                }                   
            }
        } catch (InputMismatchException ex) {
            validAnswer1 = false;
            System.out.println("Answer must be an Integer");     
            scan.next();
        }           
    }

Надеюсь, это было полезно, дайте мне знать, если вам все еще нужна помощь

...