java - 接受用户输入时打印格式

标签 java arrays input

我有一项大学作业,需要打印出五金店出售的元素,获取用户的输入,对该输入执行一些计算,然后打印出发票。

我已经能够成功打印出五金店出售的元素,但在接受输入的 while 循环方面遇到问题。

程序要求用户输入代码,然后询问相应的数量。这在循环的第一次迭代中工作正常,但在第二次迭代中,用户提示“代码:”和“数量:”出现在同一行,尽管我在提示时使用了 println用户。

我非常感谢适合编程新手的详细回复。

代码如下:

 import java.util.Scanner;

 class HardwareStore {


    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);


        System.out.println("WELCOME TO THE HARDWARE STORE!");
        System.out.println("----------------------------------------------------------------------");


        String sticky = "G22";
        String keyring = "K13";
        String screwy = "S21";
        String padlock = "I30";


        int stickyprice = 10989;
        int keyringprice = 5655;
        int screwyprice = 1099;
        int padlockprice = 4005;


        System.out.println("CODE\t\tDESCRIPTION\t\t\t\t\tPRICE");
        System.out.println("----\t\t-----------\t\t\t\t\t-----");

        System.out.println(sticky + "\t\tSTICKY Construction Glue, Heavy Duty, \n\t\t7oz, 12 Pack \t\t\t\t\t$" + stickyprice);
        System.out.println(keyring + "\t\tCAR-LO Key Ring, Quick Release, \n\t\t1 Pack\t\t\t\t\t\t$ " + keyringprice);
        System.out.println(screwy + "\t\t!GREAT DEAL! SCREW-DUP Screwy Screws, \n\t\tDry Wall Screws, 3 in. Long, 50 Pack\t\t$ " + screwyprice);
        System.out.println(padlock + "\t\tLET-IT-RAIN, Weather Proof Padlock, \n\t\tPortable, One Push Functionality\t\t$ " + padlockprice);
        System.out.println("----------------------------------------------------------------------");


        int i = 10000; 
        String [] usercode = new String[i]; 
        int [] userquantity = new int[i];


        System.out.println("PLEASE ENTER YOUR ORDER:");


        while (true) {
            System.out.println("CODE: (X to terminate)");
            usercode[i] = in.nextLine();

            if (usercode[i].equalsIgnoreCase("x")) {
                break;
            }

            System.out.println("QUANTITY: ");
            userquantity[i] = in.nextInt();
        } 
    }
}

最佳答案

当您输入QUANTITY时,您按下了回车键。 in.nextInt(); 不使用该 newline 字符,它保留在扫描器缓冲区中,直到您滚动到 in.nextLine() 再次。

此时in.nextLine()会读取直到找到换行符,该换行符恰好是缓冲区中的下一个字符。因此它再次直接跳到QUANTITY

关于java - 接受用户输入时打印格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8605891/

相关文章:

c++ - 从函数指针输出动态数组

java - 检查三角形是否是直角三角形

java - 如何在我的 Google Glass 应用程序启动后立即启动线程?

c - 代码的输出全为零

arrays - 如何将 JOIN 映射到具有子结构数组的结构数组

c++ - 基于文件的输入来定义图形变量

javascript - 获取由 ng-repeat | 填充的输入的编辑值 Angular js

javascript - 输入中的 Angularjs ng-model 不会更新 Controller 中的值

java - JLayeredPane绘制图片

java - 检查基元数组是否包含另一个数组中的所有基元的最佳方法