Для программы, которую я пишу, мне нужно прочитать введенное пользователем время в формате ЧЧ: ММ: СС АМ (или PM). Программа должна выйти, когда пользователь наберет «выйти». Я должен использовать разделитель для инициализации переменных часов, минут, секунд и AM / PM из введенной пользователем строки.
Чтобы убедиться, что пользователь не набрал «quit», я сначала прочитал в строке и выполнил стандартную проверку с использованием метода equalsIgnoreCase("quit")
. Тем не менее, мне нужно иметь возможность использовать разделитель для строки, если проверка «выход» проходит. Поскольку мой первоначальный сканер считывает входные данные из потока System.in
, как бы я использовал разделитель для строки, которую я уже прочитал, без создания другого объекта сканера, например: Scanner input = new Scanner(s).useDelimiter(":|\\s+");
?
Мой код приведен ниже :
import java.util.Scanner;
public class Delimiter
{
public static void main(String[] args)
{
int hours, minutes, seconds = 0;
String ampm, s = "";
Scanner scan = new Scanner(System.in);
while (true)
{
s = scan.nextLine(); //scans input
if (s.equalsIgnoreCase("quit")) //checks if input is "quit"
{
System.out.println("Exiting program.");
return; //exits method
}
else
{
Scanner input = new Scanner(s).useDelimiter(":|\\s+"); //This is what I want to avoid
hours = input.nextInt();
minutes = input.nextInt();
seconds = input.nextInt();
ampm = input.nextLine().trim();
}
System.out.println("Hours = " + hours);
System.out.println("Minutes = " + minutes);
System.out.println("Seconds = " + seconds);
System.out.println("Morning or Afternoon = " +ampm);
}
}
}