Есть ли способ отслеживать элементы и циклически повторять меню? - PullRequest
0 голосов
/ 27 марта 2019

Программа должна иметь возможность вводить людей в очередь и отслеживать их. у пользователя есть 3 варианта «A», чтобы ввести нового человека (int) в очередь, «N», чтобы просто обработать очередь, и «Q», чтобы выйти из очереди и затем отобразить, сколько человек в очереди , Я не могу понять, как зацикливаться и отслеживать.

package pkg3650queue;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;  // Import the Scanner class

public class Main {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
         Queue<Integer> line = new LinkedList<Integer>();
    Scanner input = new Scanner(System.in);
    Scanner addperson = new Scanner(System.in);

    String option;
do {
    System.out.println("Type A to add a person to the line (# of requests)\n"
            + "Type N to do nothing and allow the line to be processed\n"
            + "Type Q to quit the application\n");
    option = input.nextLine();

    if(option.equalsIgnoreCase("A")) {
            System.out.println("Enter a number to add a person to the line: ");
            int addtoLine = addperson.nextInt();
            line.add(addtoLine);
            System.out.println(line);
            System.out.println("There are " + line.size() + " people in the queue");
        }  else if (option.equalsIgnoreCase("N")) {
        if(line.isEmpty()){
            System.out.println("There are no elements in the line to be processed");
            System.exit(0);  
        }
        else{
            int requestsProccessed = line.remove();
            System.out.println(requestsProccessed);
            System.out.println(line);
            System.out.println("There are " + line.size() + " people in the queue");
            }
        }

    } while (!option.equalsIgnoreCase("Q"));

System.out.println("Q was chosen. The number of ppl in this queue are " + line.size());
}
}

1 Ответ

0 голосов
/ 27 марта 2019

Вы имеете в виду, как зацикливать пользовательский ввод? Вы можете использовать do-while:

    String option;
    do {
        System.out.println("Type A to add a person to the line (# of requests)\n"
                + "Type N to do nothing and allow the line to be processed\n"
                + "Type Q to quit the application\n");
        option = input.nextLine();

        if(option.equalsIgnoreCase("A")) {
            // do something
        } else if (option.equalsIgnoreCase("N")) {
            // do something
        }

        // notice we don't need an if for 'Q' here. This loop only determines how many
        // times we want to keep going. If it's 'Q', it'll exit the while loop, where
        // we then print the size of the list.

        } while (!option.equalsIgnoreCase("Q"));

    System.out.println("Q was chosen. The number of ppl in this queue are " + line.size());

Заметьте, я не тестировал этот код, но он должен помочь вам выбрать правильный путь.

Также обратите внимание, что в этом случае нам не нужно System.exit(0), так как программа просто закончит работу. Хотя бывают и исключения, вы обычно не хотите использовать System.exit(0), а скорее найдете способ, чтобы код «закончил сам».

...