Como adicionar a entrada do scanner a uma fila e sair do loop após a leitura da entrada [duplicado]

Nov 25 2020

Estou tentando adicionar entradas de scanner em um ArrayList, mas não consigo sair do loop depois de inserir as entradas. Como posso sair desse loop após terminar de inserir as entradas?

ArrayList<String> inputs = new ArrayList<>();
int i = 0;
while(scan.hasNext()){//while there is an hasNext
    inputs.add(scan.next());// add to the inputs array of queue
    i++;
}scan.close()

;

Respostas

2 SashSinha Nov 25 2020 at 07:50

Você pode verificar se o usuário inseriu uma string com um comprimento de 0, ou seja "", indicando que eles foram concluídos:

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        System.out.println("Enter input:");
        String input = "";
        try (Scanner scan = new Scanner(System.in)) {
            while (scan.hasNextLine()
                    && (input = scan.nextLine()).length() != 0) {
                queue.add(input);
            }
        }
        System.out.printf("Queue: %s%n", queue);
    }
}

Exemplo de uso:

Enter input:
A
B
C

Queue: [A, B, C]