Java пропускает сканер операторов печати, определенный - PullRequest
0 голосов
/ 23 января 2019

Так что моя проблема в том, что я хочу запросить ввод для использования сканера, но он просто не распечатывается вообще.И когда он отображает значение для пропущенного сканера, Scanner cheeseType = new Scanner(System.in);, я получаю нулевое значение.

package classesProject;

import java.util.Scanner;

class Pizza {

    String size;
    String cheese;
    int numToppings;
    double price = 0;

}
public class pizzaTime {

    public static void main(String[] args) {

        Pizza order1 = new Pizza();

        double priceOfSize = 0;
        double priceOfCheese = 0;
        double priceOfToppings = 0;

        System.out.println("Pizza size small, medium or large: ");
        Scanner sizeAsker = new Scanner(System.in);
        order1.size = sizeAsker.nextLine();

        if(order1.size == "small") {
            priceOfSize = 3.0;

        } else if(order1.size == "medium") {
            priceOfSize = 5.0;

        } else if(order1.size == "large") {
            priceOfSize = 7.0;

        System.out.println("Cheese type: normal, xtra, or thic: ");
        Scanner cheeseType = new Scanner(System.in);
        order1.cheese = cheeseType.nextLine();

        }if(order1.cheese == "normal") {
            priceOfCheese = 0.0;

        } else if(order1.cheese == "xtra") {
            priceOfCheese = 0.5;

        } else if(order1.cheese == "thic") {
            priceOfCheese = 1.0;

        }

        System.out.println("Number of toppings: ");
        Scanner toppingAsker = new Scanner(System.in);
        order1.numToppings = toppingAsker.nextInt();

        priceOfToppings = order1.numToppings * 0.25;

        double orderTotalPrice = priceOfSize + priceOfCheese;

        System.out.println("Pizza size: " + order1.size + "\n"
                + "Cheese type: " + order1.cheese + "\n"
                + "Number of toppings: " + order1.numToppings + "\n"
                + "Order total: " + orderTotalPrice
                );

    }

}

Пропускается следующее:

System.out.println("Cheese type: normal, xtra, or thic: ");
Scanner cheeseType = new Scanner(System.in);
order1.cheese = cheeseType.nextLine();

После запуска консоль отображает:

Pizza size small, medium or large: 
small
Number of toppings: 
2
Pizza size: small
Cheese type: null
Number of toppings: 2
Order total: 0.0

Итак, как вы можете видеть, он прыгает прямо со Сканера размера пиццы на число Сканеров начинки, а не в последовательном порядке.Я понятия не имею, почему или что я должен сделать, чтобы это исправить.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Не рекомендуется использовать несколько сканеров в одном входном потоке (System.in в вашем случае).Сделайте только один сканер в начале метода:

Scanner scanner = new Scanner(System.in);
//read input with this here

scanner.close(); //also close it

Редактировать: ответ Стефана правильный, но это все еще хорошая идея.

0 голосов
/ 23 января 2019

Поскольку вы закрываете скобку после следующего вопроса, этот вопрос задается только с большой пиццей

else if(order1.size == "large") {
        priceOfSize = 7.0;

    System.out.println("Cheese type: normal, xtra, or thic: ");
    Scanner cheeseType = new Scanner(System.in);
    order1.cheese = cheeseType.nextLine();

    }

Если вы поставите закрывающую скобку после priceOfSize = 7, вы можете продолжить.Вам все равно придется исправить недостающую скобку в другом месте.

...