在java中将特定格式的多个输入作为单个输入

在java中将特定格式的多个输入作为单个输入,java,c,syntax,Java,C,Syntax,到目前为止,我一直在使用扫描器获取java中的输入,但我需要为这个特定任务设置4个变量的值,并使用单行输入,即07:05:45PM 该特定溶液的C等效溶液如下所示: scanf("%d:%d:%d%s", &hh, &mm, &ss, t12) ; 我正在寻找这段代码的java等价物 您可以在扫描仪中尝试使用分隔符选项,但它不支持同时使用多个分隔符。因此,它将不完全支持您对“%d:%d:%d%s”的要求 请看一看 只是想知道,为什么不看看SimpleDataForma

到目前为止,我一直在使用扫描器获取java中的输入,但我需要为这个特定任务设置4个变量的值,并使用单行输入,即07:05:45PM

该特定溶液的C等效溶液如下所示:

scanf("%d:%d:%d%s", &hh, &mm, &ss, t12) ;

我正在寻找这段代码的java等价物

您可以在扫描仪中尝试使用分隔符选项,但它不支持同时使用多个分隔符。因此,它将不完全支持您对“%d:%d:%d%s”的要求

请看一看


只是想知道,为什么不看看SimpleDataFormatter来解析单个字符串并得到小时、分钟、秒

您可以使用
扫描仪
实例,为其设置一个分隔符,如
“\\s*:\\s*”

它可以给出以下代码:

Scanner s = new Scanner("07:05:45PM").useDelimiter("\\s*:\\s*");

int hours = s.nextInt();
int minutes = s.nextInt();
String secondAndMeridiem = s.next();
int seconds = Integer.valueOf(secondAndMeridiem.substring(0, 2));
String meridiem = secondAndMeridiem.substring(2, 4);

我能得到的最接近的是这个,但只有在
07:05:45PM
中的45和PM之间有一些分隔符,比如
07:05:45PM
,这才有效。否则,需要将输入作为字符串进行解析

static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
  int hh, mm, ss;
  String t12;
  scanner.useDelimiter("[:\n ]");
  hh = scanner.nextInt();
  mm = scanner.nextInt();
  ss = scanner.nextInt();
  t12 = scanner.next();
  System.out.println(hh);
  System.out.println(mm);
  System.out.println(ss);
  System.out.println(t12);
}

“我在这个特殊任务中需要的是用一行输入设置4个变量的值”——为什么?您不能将输入作为字符串变量,然后使用
split
substring
函数来满足您的要求吗?