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才是合理的.