思考一下这道题
如果输入的长度不是8位数呢,我输6位类似与202092你们按照Substring(0,4),(4,6),(6,8)这样的代码确定不会报错吗???
肯定会错误啊
来看一下:这是系统中通过的代码
代码块
package com.yunze.niuketest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String s=in.readLine();
String year=s.substring(0,4);
String month=s.substring(4,6);
String date=s.substring(6,8);
System.out.println("year="+year);
System.out.println("month="+month);
System.out.println("date="+date);
}
}
上述代码输入202092执行之后
很显然出错了啊
这样系统怎么判定对的呢
我用最基础的写了一个
供大家参考,代码有压缩的空间,你们自行优化
代码块
package com.yunze.niuketest;
import java.util.Scanner;
public class NiuKE {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
if (a.length() <= 8) {
if (a.length() == 8) {
String b = a.substring(0, 4);
String c = a.substring(4, 6);
String d = a.substring(6, 8);
System.out.println("year=" + b);
System.out.println("month=" + c);
System.out.println("date=" + d);
} else if (a.length() == 6) {
String b = a.substring(0, 4);
String c = a.substring(4, 5);
String d = a.substring(5, 6);
System.out.println("year=" + b);
System.out.println("month=0" + c);
System.out.println("date=0" + d);
} else if (a.length() != 6) {
String b = a.substring(0, 4);
String c = a.substring(4, 6);
int month = Integer.parseInt(c);
String d = a.substring(6, 7);
if (month > 12) {
String mo = a.substring(4, 5);
String da = a.substring(5, 7);
System.out.println("year=" + b);
System.out.println("month=0" + mo);
System.out.println("date=" + da);
} else if (month <= 12) {
System.out.println("year=" + b);
System.out.println("month=" + c);
System.out.println("date=0" + d);
}
}
}
}
}

京公网安备 11010502036488号