Validación de entrada del escáner en ciclo while

Tengo que mostrar las entradas del escáner en un ciclo while: el usuario tiene que insertar entradas hasta que escriba “salir”. Entonces, tengo que validar cada entrada para verificar si escribe “salir”. ¿Cómo puedo hacer eso?

while (!scanner.nextLine().equals("quit")) { System.out.println("Insert question code:"); String question = scanner.nextLine(); System.out.println("Insert answer code:"); String answer = scanner.nextLine(); service.storeResults(question, answer); // This stores given inputs on db } 

Esto no funciona ¿Cómo puedo validar cada entrada de usuario?

El problema es que nextLine () “Avanza este escáner más allá de la línea actual”. Por lo tanto, cuando llama a nextLine() en el estado while y no guarda el valor devuelto, ha perdido esa línea de entrada del usuario. La llamada a nextLine() en la línea 3 devuelve una línea diferente.

Puedes probar algo como esto

  Scanner scanner=new Scanner(System.in); while (true) { System.out.println("Insert question code:"); String question = scanner.nextLine(); if(question.equals("quit")){ break; } System.out.println("Insert answer code:"); String answer = scanner.nextLine(); if(answer.equals("quit")){ break; } service.storeResults(question, answer); } 

Tratar:

 while (scanner.hasNextLine()) { System.out.println("Insert question code:"); String question = scanner.nextLine(); if(question.equals("quit")){ break; } System.out.println("Insert answer code:"); String answer = scanner.nextLine(); service.storeResults(question, answer); // This stores given inputs on db } 

siempre compruebe si scanner.nextLine no es “quit”

 while (!scanner.nextLine().equals("quit")) { System.out.println("Insert question code:"); String question = scanner.nextLine(); if(question.equals("quit")) break; System.out.println("Insert answer code:"); String answer = scanner.nextLine(); if(answer.equals("quit")) break; service.storeResults(question, answer); // This stores given inputs on db 

}