import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String a = in.nextLine();
int len = a.length();
int lineNum = (len-1)/8;
for(int i=0;i<=lineNum;i++) {
if(i==lineNum && len%8!=0){
String sub = a.substring(i*8);
for(int j=0;j<8-len%8;j++){
sub= sub+"0";
}
System.out.println(sub);
}else{
System.out.println(a.substring(i*8,(i+1)*8));
}
}
}
}
这个题目看起来挺简单,即按长度为8分割字符串为多段,如果最后一段不足8,则加0实践为8. 但是在细节方面处理起来还是有些讲究,特别是各种边界情况,比如,我就在lineNum这个取值情况栽了跟头,开始的时候,我的lineNum=len/8,这样的问题是如果len刚好是16或者24这种情况就出问题了,比如len=16,最大行标lineNum=len/8=2,但是实际上只有两行,即第0行,第1行,是没有第2行的.但是这个结果却要遍历到第2行,就会出现数组越办了.其实len=16跟15应该来说,最大行标应该是一样的,只有出现len=17的时候,才会有三行,才会出现最大行标是2.所以lineNum应该等于(len-1)/8才是合理的.



京公网安备 11010502036488号