Java 跳过打印语句扫描器,具体

标签 java output java.util.scanner

所以我的问题是我想要求输入使用扫描仪的信息,但它根本不打印出来。当它显示跳过的扫描仪的值时,Scanner CheeseType = new Scanner(System.in);,我得到 null。

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

正如您所看到的,它直接从披萨尺寸扫描仪跳到配料数量扫描仪,而不是按顺序进行。 我不知道为什么,或者我应该做什么来解决这个问题。

最佳答案

由于您在下一个问题后关闭括号,因此仅针对大披萨询问此问题

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 之后添加右括号,则可以继续。不过,您仍然需要在其他地方修复丢失的括号。

关于Java 跳过打印语句扫描器,具体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54322574/

相关文章:

java - 我如何用我的java计算器继续加法

java - 用哨兵填充字符串数组

java - Java 文件读取有什么问题?

java - 扫描仪仅读取第一组输入

java - 不同年份的两个日期之间的差异

java - 通用 BiDiMap

java - 从远程 .jar 创建运行时环境

C# 输出到文本框

linux - 如何将此 awk 命令的输出保存到文件中?

C++ - 输出语句的顺序不一致