Форматирование печати при вводе пользователем - PullRequest
2 голосов
/ 22 декабря 2011

У меня есть задание колледжа, в котором мне нужно распечатать товары, продаваемые в магазине, принять данные от пользователя, выполнить некоторые вычисления для этого ввода, а затем распечатать счет.

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

Программа просит пользователя ввести КОД, а затем запрашивает соответствующее КОЛИЧЕСТВО,Это прекрасно работает на первой итерации цикла, но на второй итерации пользователь запрашивает «CODE:» и «QUANTITY:» в одной строке, несмотря на мое использование 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();
        } 
    }
}

1 Ответ

5 голосов
/ 22 декабря 2011

при вводе QUANTITY вы нажимаете ввод.Этот символ newline не используется in.nextInt();, он остается в буфере сканера, пока вы снова не вернетесь к in.nextLine().

В этот момент in.nextLine() читает, пока не найдет символ новой строки, который просто оказывается следующим в буфере.Таким образом, он снова переходит прямо к QUANTITY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...