字符串分割

 

 

输入描述:

首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。

输出描述:

按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入例子:
2
abc
123456789
输出例子:
abc00000
12345678
90000000


 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()的使用有待考虑。

 

posted @ 2016-08-19 16:28  蛋蛋的守护  阅读(667)  评论(0)    收藏  举报