Переключить параметры и по умолчанию - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть задание, которое я делаю для школы.Я выполнил его почти на 99%, но я борюсь с этой последней вещью.

Последняя опция переключения должна выполнять вычисления, если человек, использующий ее, нажимает клавишу «1».Если нет, он выдаст сообщение о неправильном ключе.

Моя проблема в том, что он выполняет вычисления без каких-либо проблем, но даже если человек нажимает что-то кроме «1», он все равно завершает вычисление.

Чего мне не хватает?

int option, quantity; 
    float childTotal=0; 
    final double childCost=18.00; 
    float adultTotal=0;
    final double adultCost=36.00;
    float seniorTotal=0;
    final double seniorCost=32.50;

    Scanner input = new Scanner(System.in); //InputStream initialisation


    System.out.println("@@@@@  Welcome to Zoo Victoria  @@@@@");
    System.out.println();
    System.out.println("MAIN MENU");
    System.out.println();
    System.out.println("Please choose from the following ticket type");
    System.out.println();
    System.out.println("1 = Child (4-5 years)");
    System.out.println("2 = Adult (18+ years)");
    System.out.println("3 = Senior (60+ years)");
    System.out.println();
    System.out.println("Enter your ticket type");
    option=input.nextInt();
    System.out.println("Enter the total number of tickets to be purchased");
    quantity=input.nextInt();
    System.out.print("You wish to purchase " +(quantity));
    switch (option) {
        case 1: System.out.println (" child tickets at $18.00");
                break;
        case 2: System.out.println (" adult tickets at $36.00");
                break;
        case 3: System.out.println (" senior tickets at $32.50");
                break;
        }
    System.out.println("Press 1 to confirm purchase");
    option=input.nextInt();
    {
        switch (option) {
        case 1: childTotal=(float) (childTotal + (childCost * quantity));
                System.out.println(childTotal);
                break;
        case 2: adultTotal=(float) (adultTotal + (adultCost * quantity));
                System.out.println(adultTotal);
                break;
        case 3: seniorTotal=(float) (seniorTotal + (seniorCost * quantity));
                System.out.println(seniorTotal);
                break;
        default:
                System.out.println("Incorrect Key");
        }

 }
    }
}

1 Ответ

0 голосов
/ 05 декабря 2018

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

Вы повторно инициализировали переменную параметра, а затем использовали ее снова, намереваясь использовать первый параметр = input.nextInt ()

option = input.nextInt();

switch (option) {
    case 1:
        childTotal = (float) (childTotal + (childCost * quantity));
        System.out.println(childTotal);
        break;
    case 2:
        adultTotal = (float) (adultTotal + (adultCost * quantity));
        System.out.println(adultTotal);
        break;
    case 3:
        seniorTotal = (float) (seniorTotal + (seniorCost * quantity));
        System.out.println(seniorTotal);
        break;
    default:
        System.out.println("Incorrect Key");
}

Возможное решение:

System.out.println("Press 1 to confirm purchase");
        if(input.nextInt() == 1){




        switch (option) {
            case 1:
                childTotal = (float) (childTotal + (childCost * quantity));
                System.out.println(childTotal);
                break;
            case 2:
                adultTotal = (float) (adultTotal + (adultCost * quantity));
                System.out.println(adultTotal);
                break;
            case 3:
                seniorTotal = (float) (seniorTotal + (seniorCost * quantity));
                System.out.println(seniorTotal);
                break;
            default:
                System.out.println("Incorrect Key");
        }
        }else{
            System.out.println("err");
            // do what you want
        }
...