要机试了,华孝子求捞,功德++
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:
abc
输出:
abc00000
分析
先给大伙看看我直接模拟题目写出的勾史代码:
直接无脑对凑不够8个的部分单独处理
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String str = in.nextLine();
List<String> arr = new ArrayList<>();
int len = 0;
while (len+8 < str.length()) {
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < 8; i++) sb.append(str.charAt(len+i));
arr.add(sb.toString());
len += 8;
}
StringBuilder sb = new StringBuilder("");
for(int i = len; i < str.length(); i++) sb.append(str.charAt(i));
for(int i = 0; i < 8-str.length()+len; i++) sb.append('0');
arr.add(sb.toString());
for (String i : arr) System.out.println(i);
}
}
没看题解前大致知道Java应该有截取子串的方法,但没怎么用过,看了题解果然
s.substring(
0
,
8
)截取下标0-7的字符串,返回String类型
s.substring(8
)直接返回从第九个元素开始的字符串
所以代码可以优雅地写成
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String str = in.nextLine();
while (str.length() > 8) {
System.out.println(str.substring(0,8));
str = str.substring(8);
}
while (str.length() < 8 && str.length() > 0) str += '0';
System.out.println(str);
}
}
虽然但是如果运行超时需要用StringBuilder来处理拼接,过了就不管啦^^