输入描述:
首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。
输出描述:
按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入例子:
2abc123456789
输出例子:
abc000001234567890000000
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 int n = sc.nextInt(); 8 // int n = 2; 9 // System.out.println(n);10 // System.out.println("%%%%%%%%");11 12 String[] str = new String[n]; 13 for(int i = 0;i < n;i++){ 14 str[i] = sc.next(); 15 // System.out.println(str[i]);16 }17 18 for(int i = 0;i < n;i++){ 19 // System.out.println(str[i]); 20 getStr(str[i]); 21 } 22 }23 24 } 25 public static void getStr(String s){ 26 StringBuffer sb = new StringBuffer(s); 27 if(s.length() % 8!= 0){28 int n = 8 - s.length() % 8; 29 for(int i = 0;i < n;i++){ 30 sb.append("0"); 31 } 32 } 33 while(sb.length() >= 8){ 34 System.out.println(sb.substring(0, 8));35 sb = sb.delete(0, 8); 36 } 37 } 38 }
1.与字符串分隔很类似旦不同的是 上一题只要连续输入两次而这个道题给出了输入的字符串个数;这就使得读取控制台输入要设一个数组
2.str[i] = sc.next(); 这里除了很多问题,一直不正确,问题出在:next()和nextLine()的区别上
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。 如果读取到空字符,想到可能next()和nextLine()的使用有待考虑。