您的位置:首页 > 编程语言 > Java开发

Java-------华为机试-------字符串分隔

2017-04-21 09:45 190 查看

题目描述

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

[b]输入描述:[/b]
连续输入字符串(输入2次,每个字符串长度小于100)

[b]输出描述:[/b]
输出到长度为8的新字符串数组

[b]输入例子:[/b]
abc
123456789


[b]输出例子:[/b]
abc00000
12345678
90000000


解法1:

最终自己的AC代码是

import java.util.Scanner;
/** * Created by user on 2017/4/18. */
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//多组测试实例,所以用hasNext判断
while (in.hasNext()) {

String str= in.nextLine();
int len=str.length();    //len位数组长度
int m=len/8;      //最少可分割的组数

/*
下面嵌套循环,内层作用位分割为8个一组,外层循环确定组数
, “if”考虑特殊情况
*/
for(int i=0; i<= m;i++){
if(i*8==len){     //是否已经分割完毕(其实就是特殊情况:len=8,16,24……)
break;    //是的话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();//换行。
}

}

}
}

解法二:

摘自http://www.cnblogs.com/qiaoyanlin/p/6607124.html   ,

不过他没写注释,我在这里加了几句自己的注释

import java.util.Scanner;
/** * Created by user on 2017/4/18. */
import java.util.*;
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 = s.substring(8);  //s扔掉前8位,不懂的可以看我下面的substring()的解释
}
}
}
}

注释:substring()有两种用法

str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;

简单说,就是
System.out.println( s.substring(8));

,只输出从下标为8的以后的子字符串,前八位不输出

str=str.substring(int beginIndex,int endIndex);
截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;

System.out.println(s.substring(0, 8));

   只输出从0-8的子字符串

其他的解法百度一大堆,但是太长太啰嗦。。。所以就不引用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: