思考一下这道题
如果输入的长度不是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); } } } } }