思考一下这道题

如果输入的长度不是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);
                }
            }
        }

    }
}