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

时间:2017-06-06 10:16:20

标签: java c syntax

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

此特定解决方案的C等效解决方案如下:

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用Scanner实例设置分隔符,例如"\\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);

答案 1 :(得分:0)

您可以在扫描仪中尝试分隔符选项,但它不会同时支持多个分隔符。所以它不会支持你的要求""%d:%d:%d%s""充分。

请看一下

How to read comma separated integer inputs in java

只是好奇地知道,为什么不看看SimpleDateFormatter来解析单个字符串并获得小时,分钟,秒

答案 2 :(得分:0)

我能得到的最接近的是这个,但只有在07:05:45PM {45}和PM之间有一些分隔符时才会有效。07:05:45 PM否则,输入需要被视为String并进行解析。

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);
}