Discuss / Java / 作业

作业

Topic source

/**
* 从"21:05:19"中提取时,分,秒,否则抛出IllegalArgumentException
*/
public static int[] parseTime(String s) {
// FIXME: 00:00:00

if (s == null || "".equals(s)) {
throw new IllegalArgumentException();
}

String hour = s.substring(0, 1);
if (Integer.parseInt(hour) > 2) {
throw new IllegalArgumentException();
}

if (Integer.parseInt(hour) == 2) {
if (Integer.parseInt(s.substring(1, 2)) > 3) {
throw new IllegalArgumentException();
}
}

String minute = s.substring(4, 5);
if (Integer.parseInt(minute) > 6) {
throw new IllegalArgumentException();
}

String second = s.substring(7, 8);
if (Integer.parseInt(second) > 6) {
throw new IllegalArgumentException();
}

Pattern pattern = Pattern.compile("([0-9]{2})[:]([0-9]{2})[:]([0-9]{2})");

Matcher matcher = pattern.matcher(s);
int[] ints = new int[3];
if (matcher.matches()) {
String group1 = matcher.group(1);
String group2 = matcher.group(2);
String group3 = matcher.group(3);

int i1 = Integer.parseInt(group1);
ints[0] = i1;
int i2 = Integer.parseInt(group2);
ints[1] = i2;
int i3 = Integer.parseInt(group3);
ints[2] = i3;
return ints;
}

throw new IllegalArgumentException();
}

看 评论 还能写 条件 | 

瞬间感觉 自己 有点蠢。。。。

改进 感觉 还是 有点 low

Pattern pattern = Pattern.compile("([0-1][\\d]|[2][0-3])[:]([0-5][\\d])[:]([0-5][\\d])");


  • 1

Reply