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

来源:互联网 发布:阿尔法软件官方下载 编辑:程序博客网 时间:2024/05/01 10:41

题目描述

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


输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)



输出描述:

输出到长度为8的新字符串数组


输入例子:
abc123456789

输出例子:
abc000001234567890000000


解法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的子字符串

其他的解法百度一大堆,但是太长太啰嗦。。。所以就不引用了。

0 0
原创粉丝点击