004字符串分隔

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;

•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

示例1

输入

abc 123456789

输出

abc00000 12345678 90000000

我的解答

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
//拆分长度为8
        int size = 8;
        while (input.hasNextLine()) {
//先用StringBuilder存放字符串
            StringBuilder targetBuilder = new StringBuilder(input.nextLine());
//targetBuilder.length() % size代表最后一个字符串长度 但要考虑刚好为size倍数情况
//例子  
// 123456789 ->(12345678 9)->(12345678 90000000)
// 9%8=1 最后一个字符串长度为1 需要补(8-1)=7个零
// 12345678  ->(12345678)
// 8&8=0 刚好为size的倍数 不需要补零
// 但(8-0)=8  结果就变成  12345678  ->(12345678 00000000)
// 所以再次对补零数对size取模
            int num = (size - (targetBuilder.length() % size)) % size;
//补零
            for (int i = 0; i < num; i++) {
                targetBuilder.append("0");
            }
            String target = targetBuilder.toString();
            while (target.length() >= size) {
//截取并输出前size个字符
                System.out.println(target.substring(0, size));
//更新截取后的字符串
                target = target.substring(size);
            }
        }
    }
}

学到的东西
1.substring(start,end)提取字符串中介于两个指定下标之间的字符 左开右闭
"hello" h下标为1 e下标为2 o下标为5

posted @ 2020-06-07 10:56  smsmdmx  阅读(83)  评论(0)    收藏  举报