题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
输入例子:
abc
123456789
输出例子:
abc00000
12345678
90000000
解法1:
暴力:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String str = in.nextLine();
int len = str.length();
int m = len / 8;
// 最少可分割的组数
/* 下面嵌套循环,内层作用位分割为8个一组,外层循环确定组数 , “if”考虑特殊情况 */
for (int i = 0; i <= m; i++) {
if (i * 8 == len) {
// 特殊情况:len=8,16,24……
break;
}
for (int j = 0; j < 8; j++) {
if (i * 8 + j < len)// 判断是否字符串还没输出完
System.out.print(str.charAt(i * 8 + j));
// 没输出完的字符串余下部分继续输出
else {
System.out.print("0");
// 字符串已输出完但是这个子字符串输出位数不足8位的补“0”
}
}
System.out.println();// 换行。
}
}
}
}
解法二:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = new String(sc.nextLine());
if (s.length() % 8 != 0)
// 如果不是八的倍数,字符串直接加八个“0”,
s = s + "00000000"; // 明显字符串只要八个一组输出就可以啦;
while (s.length() >= 8) {
System.out.println(s.substring(0, 8));
s = s.substring(8);
}
}
}
}