102字符串分割

该博客介绍了如何处理字符串,按照长度为8进行分割,并在不足时用0补足。提供了输入字符串数量、获取处理后数组长度及比较输入与处理后数组的接口函数设计,并给出了一种JAVA实现思路。

题目描述
连续输入字符串(输出次数为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

while True:
    try:
        n=int(input())
        for i in range(n):
            str=input()
            while len(str)>8:#长度大于8的循环
                print(str[:8])
                str=str[8:]
            print(str.ljust(8,'0'))
    except:
        break

JAVA思路:
1.先判断是否能被8整除,利用StringBuffer不能则末尾添加8-余数个0
2.然后循环判断长度大于等于8时,输出子串substring(0,8),并将substring(8)之后的赋给str,即str更新

import java.util.Scanner;
 
public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            int n =Integer.parseInt(in.nextLine());//Integer.parseInt()将输入的字符转为int型整数
            for(int i=0;i<n;i++){//遍历每行
                String line=in.nextLine();//读取一行
                int yushu=line.length()%8;
                StringBuffer sb=new StringBuffer(line); //创建StringBuffer判断不是8的倍数,末尾添加8-余数个零
                if (yushu!=0){
                    for(int j=8-yushu;j>0;j--){
                        sb.append('0');
                    }
                }
                String str=sb.toString();//转为string
                while(str.length()>=8){//大于8时,每次打印8个,并将之后的字符串赋给新的str
                    System.out.println(str.substring(0,8));
                    str=str.substring(8);
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值