字符串分割

1、题目描述:

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

首先输入一个整数,为要输入的字符串个数。

例如:

输入:2

      abc

      12345789

输出:abc00000

      12345678

      90000000

接口函数设计如下:

/*****************************************************************************
功能:存储输入的字符创

输入:字符串

输出:无
    
返回:0表示成功,其它返回-1
******************************************************************************/

int  AddString(char *strValue);
/****************************************************************************
功能:获取补位后的二维数组的长度

输入:无

输出:无
    
返回:二维数组长度
*****************************************************************************/

int  GetLength();


/*****************************************************************************
功能:将补位后的二维数组,与输入的二维数组做比较

输入:strInput:输入二维数组,iLen:输入的二维数组的长度

输出:无
    
返回:若相等,返回0;不相等,返回-1.其它:-1;
******************************************************************************/
int  ArrCmp(char strInput[][9],int iLen);、

输入描述:

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

输出描述:

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

示例1

输入

复制
2
abc
123456789

输出

复制
abc00000
12345678
90000000

2、思路:

  首先使用字符串数组存储输入进来的字符串,然后,遍历字符串数组,对每个元素的字符串单独处理,分为长度大于8,小于8,等于8,,三种情况。最后将处理完的字符串保存到结果集中。

3、代码:

复制代码
import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int count=scan.nextInt();
            String[] strArr=new String[count]; 
            for(int i=0;i<count;i++){
                strArr[i]=scan.next();
            }
            List resultList=getCmp(strArr);
            for(int j=0;j<resultList.size();j++){
                String s=String.valueOf(resultList.get(j));
                System.out.println(s);
            }
            
        }
        
    }

    public static ArrayList<String> getCmp(String [] strArr){
        ArrayList<String> resultList=new ArrayList<>();
        //遍历输入数组
        for(int i=0;i<strArr.length;i++){
            String s=strArr[i];
            int length=s.length();
            if(length<8){
                int addCount=8-length;
                for(int j=0;j<addCount;j++){
                    s=s+"0";
                }
                resultList.add(s);
            }else if(length>8){
                //字符串的长度可能是8的好几倍,因此需要将字符串每八个生成一个新的字符串
                int start=0;
                while((length-start)>8){
                    String tempStr=s.substring(start,start+8);
                    start=start+8;
                    resultList.add(tempStr);
                }
                int addCount1=8-length+start;
                String lastString=s.substring(start,length);
                for(int j=0;j<addCount1;j++){
                    lastString=lastString+"0";
                }
                resultList.add(lastString);
            }else{
                resultList.add(s);
            }
        }
        return resultList;
    }
}
复制代码

 

posted @   guoyu1  阅读(262)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示