Я хочу создать строку ArrayList с вводом от пользователя, но вводы будут бесконечными. Как остановить это, когда пользователь захочет.

public class SortingString {

public static void main(String args[]) {

    Scanner in = new Scanner(System.in);
    ArrayList<String> words = new ArrayList<String>();

    System.out.println("Enter the words:");

    while (in.hasNext()) {
        words.add(in.nextLine());
    }

    Collections.sort(words);
}

Изменить: Спасибо за все ответы, ребята. Теперь работает.

0
user9971024 25 Сен 2018 в 13:29

2 ответа

Лучший ответ

Как насчет?

public class SortingString {
    public static void main(String args[]) {

        Scanner in = new Scanner(System.in);
        ArrayList<String> words = new ArrayList<String>();

        while (in.hasNext()) {
            System.out.println("Enter the word:");
            words.add(in.nextLine());
            System.out.println("Do you want to continue? (y/n)");
            in.hasNext();
            if (!in.nextLine().equalsIgnoreCase("y")) {
                break;
            }
        }
        Collections.sort(words);

        in.close(); // Don't forget to close the stream !!
    }
}

Более элегантный способ: (РЕДАКТИРОВАТЬ Размещенный полный код)

public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    ArrayList<String> words = new ArrayList<String>();

    System.out.println("Enter the words or write STOP to exit:");
    while (in.hasNext()) {
        String inputLine = in.nextLine();
        if (inputLine.equalsIgnoreCase("STOP")) {
            break;
        }
        words.add(inputLine);
    }

    Collections.sort(words);

    System.out.println("The words sorted:");
    System.out.println(words);

    in.close(); // Don't forget to close the stream !!
}
2
Emax 25 Сен 2018 в 10:47

Это было бы возможным решением, когда слово «выйти» не добавляется в список words.

public class SortingString {

public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    ArrayList<String> words = new ArrayList<String>();

    System.out.println("Enter the words:");
    boolean isFinished = false;
    while (!isFinished && in.hasNext()) {
        String word = in.nextLine();

        if ("q".equals(word)) {
            isFinished = true;
        } else {
            words.add(word);
        }
    }

    in.close(); 
    Collections.sort(words);
}
1
Kevin Wallis 25 Сен 2018 в 10:37