gpt4 book ai didi

Java:查找多个分隔符

转载 作者:行者123 更新时间:2023-11-30 05:05:40 24 4
gpt4 key购买 nike

我试图将小时、分钟、秒和毫秒与输入的时间分开。现在我有

public MillisTime(String str)
throws IllegalArgumentException {
// Initialize values so that missing fields default to 0.
int hours = 0, minutes = 0, seconds = 0, millis = 0;

// Use Scanner class to parse the time string.
// Catch InputMismatchException and rethrow IllegalArgumentException.
Scanner scn = new Scanner(str);

scn.useDelimiter(":");
try {
if (scn.hasNext()) hours = scn.nextInt();
if (scn.hasNext()) minutes = scn.nextInt();
if (scn.hasNext()) seconds = scn.nextInt();

scn.useDelimiter(".");
if (scn.hasNext()) millis = scn.nextInt();
}
catch (InputMismatchException ex) {
throw new IllegalArgumentException(
"String Input Mismatch Exception: " + str);
}
scn.close();
this.setAllFields(hours, minutes, seconds, millis);
}

它接收的输入是“16:5:7.009”并导致字符串输入不匹配异常。如果我取出查找周期和毫秒的行,然后输入类似 3:45 的内容,它就会起作用。我如何才能找到 :.

最佳答案

发生异常的原因是分隔符为“:”,子组件为{16, 5, 7.009}。 7.009 不是整数,因此当您第三次调用 scanner.nextInt() 时,您会收到异常。

请记住,分隔符扫描器使用的可以是正则表达式模式,因此分隔符可能是 。或:同时:

scanner.useDelimiter(Pattern.compile("[\\.:]");

关于Java:查找多个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5174455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com