到目前为止,我一直在使用扫描仪来获取java中的输入,但我需要为这个特定任务设置4个变量的值,只需一行输入,即07:05:45 PM
此特定解决方案的C等效解决方案如下:
scanf("%d:%d:%d%s", &hh, &mm, &ss, t12) ;
我正在寻找这段代码的java等价物。
答案 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);
}