import java.util.*;
public class Main{
public static void split(String s){
if(s.length()<8){ //如果输入的字符串长度小于8,则添加"0";
String s1 = s;
while(s1.length()!=8){
s1 = s1+"0";
}
System.out.println(s1);
}else if(s.length() == 8){
System.out.println(s); //如果字符串长度等于8,直接输出;
}else {
String s2 = s.substring(0, 8);
System.out.println(s2);
split(s.substring(8, s.length())); //如果字符串长度大于8,先截取前8个字符,然后递归调用此方法
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
for(int i=0; i<2; i++) {
String s = in.nextLine();
split(s);
}
}
}
这个题目显然要分情况讨论:
如果字符串长度小于8,我们可以新建一个字符串s1,把输入的字符串s赋值给s1,然后在s1的基础上循环加"0",循环结束条件为s1的长度为指定值8;
如果字符串长度等于8,则直接输出;
如果字符串长度大于8,则首先使用substring()方法截取8个长度的字符直接输出,剩余的字符串则递归调用此方法,从头开始。
这里需要注意的是:substring(beginIndex, endIndex)方法中的
endIndex参数实际起作用的是endIndex-1;
正如代码中显示的:String s2 = s.substring(0, 8);
beginIndex显然为0,这里endIndex为8,但其实真正取到的字符序列为0~7。
也就是说substring方法的参数范围是:左闭右开
还有一点就是递归的使用,显然此例可以很好的使用递归。
只要每天积累,一定会有收获!