首页 > 试题广场 >

字符串分隔

[编程题]字符串分隔
  • 热度指数:1272139 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的由小写字母和数字混合构成的字符串 s,你需要按每 8 个字符换一行的方式书写它,具体地:
\hspace{23pt}\bullet\,书写前 8 个字符,换行;
\hspace{23pt}\bullet\,书写接下来的 8 个字符,换行;
\hspace{23pt}\bullet\,……
\hspace{23pt}\bullet\,重复上述过程,直到字符串被完全书写。
\hspace{15pt}特别地,如果最后一行不满 8 个字符,则需要在字符串末尾补充 0,直到长度为 8

输入描述:
\hspace{15pt}在一行上输入一个长度 1 \leqq {\rm length}(s) \leqq 100,由小写字母和数字构成的字符串 s


输出描述:
\hspace{15pt}输出若干行,每行输出 8 个字符,代表按题意书写的结果。
示例1

输入

hellonowcoder

输出

hellonow
coder000

说明

\hspace{15pt}在这个样例中,字符串长度为 13,因此需要在第二行末尾补充 30
示例2

输入

0

输出

00000000
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
//        str = StringUtils.rightPad(str, str.length() + (8 - str.length() % 8), '0');
        str = str + (str.length() % 8 == 0 ? "" : "00000000".substring(0,8 - str.length() % 8));
        for(int i = 0; i < str.length() / 8; i++) {
            System.out.println(str.substring(i * 8, i * 8 + 8));
        }
    }
}

发表于 2025-09-09 17:26:49 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        String s = in.nextLine();
        int epoch = s.length() / 8;
        int flag = 0;
        String ends = s.substring(epoch * 8, s.length());
        //先判断几个八位
        for (int i = 0; i < epoch; i++) {

            System.out.println(s.substring(flag, flag + 8));
            flag += 8;
        }
        //再判断最后一组字符
        if (ends.length() < 8 && ends.length() > 0) {
            String zero = "00000000";
            System.out.println(ends + zero.substring(ends.length(), 8));
        }
    }
}
发表于 2025-08-13 22:44:15 回复(0)
1.获取输入字符串
2.for循环,循环步长8,进行打印
3.字符串尾部不够8的直接补充7个0,因为7个是最多需要补充的0数量
4.字符串尾部+补充字符数量足够8后,继续将这个8个打印
5..结束
发表于 2025-07-22 23:20:48 回复(0)
看到 Java 榜快的都用BufferedReader,有什么讲究吗?
发表于 2025-07-14 21:52:34 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        a = a + "0000000";
        while (a.length() >= 8) {
            System.out.println(a.substring(0, 8));
            a = a.substring(8);

        }
    }
}
发表于 2025-07-13 11:52:56 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str ="";
        while (in.hasNext()) { // 注意 while 处理多个 case
            str = in.next();
        }
        int len = str.length();
        int seg = len%8 == 0? len/8 : len/8 +1;
        for(int i = 0; i< seg; i++){
            int bu = (i+1) * 8 > len ? (i+1) * 8 - len : 0;
            String s1 = str.substring(i*8, bu== 0? (i+1) * 8 :len );
            if(bu>0){
                StringBuilder bd = new StringBuilder();
                bd.append(s1);
               for(int j = 0 ;j< bu; j++){
                        bd.append("0");
               }
               s1 = bd.toString();
            }
            System.out.println(s1);
        }
         
    }
}
发表于 2025-07-11 16:42:04 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int length;
        while ((length = s.length()) > 8) {
            System.out.println(s.substring(0, 8));
            s = s.substring(8);
        }
        System.out.println(s + "00000000".substring(length));
    }
}
发表于 2025-07-04 20:33:57 回复(0)
public class Main { public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        StringBuilder builder = new StringBuilder(s); if (builder.length() >=0 && builder.length() <=100) {
            StringBuilder b1 = new StringBuilder(); for (int i=0 ; i<builder.length(); i++) {
                b1.append(builder.charAt(i)); if ((i + 1) % 8 == 0) {
                    System.out.println(b1.toString());
                    b1.setLength(0);
                }
            } if (b1.length() > 0) { while (b1.length() < 8) {
                    b1.append(0);
                }
                System.out.println(b1.toString());
            }
        }
    }
}
发表于 2025-07-02 17:25:31 回复(0)
import java.util.Scanner;


public class Main {

    private static int LENGTH=8;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = sc.nextLine();
        String output;
        if (str.length()<1 || str.length() >100) return;//
        for (int i = 0; i<str.length(); i+=LENGTH) {//按照8个一次遍历
            if(i+LENGTH<str.length()){//未超出长度,直接截取8位输出
                output= str.substring(i,i+LENGTH);
                System.out.println(output);
            }else{//超出长度补齐8位
                output= str.substring(i,str.length());
                System.out.print(output);
                for (int j = output.length();j<8;j++){
                    System.out.print("0");
                }
            }

        }
        sc.close();
    }
}

发表于 2025-06-17 17:27:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        in.close();
        //1.判断str的长度能否被8整除
        int length = str.length();
        //调用Stringbuilder动态的添加后缀append方法
        if (str.length() < 8) {
            StringBuilder rs = new StringBuilder();
            //rs.append(str);//先初始化str
            //从1遍历到add append“0”
            for (int i = 1; i <= 8 - str.length(); i++) {
                rs.append("0");
            }
            System.out.println(str+rs);
        } else if (length % 8 == 0) {
            //可以整除则直接八个八个的输出
            //如何八个八个的输出 用substring,遍历整个字符串
            int line = str.length() / 8; // 8->1 16->2 24->3
            for (int j = 1; j <= line; j++) {
                System.out.println(str.subSequence(j * 8 - 8,
                                                   j * 8)); //注意subsequence右侧边界是不包括的,所以不是j*8-1
            }
        } else { //不可以整除则看余数n是几,补上8-n个0 用append最好啦
           
            int last = length % 8; //9->1  13->5
            int add = 8 - last;   //1->7  5->3
            //从1遍历到add 缺几个+几个“0”
            for (int i = 1; i <= add; i++) {
                str+="0";
            }
            int line = str.length() / 8; // 16->2 24->3
            for (int j = 1; j <= line; j++) {
                System.out.println(str.subSequence(j * 8 - 8, j * 8));
            }
        }
    }
}
发表于 2025-04-20 15:52:49 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        String s = in.nextLine();
        int num = 0;
        int tmp = 0;
        int end = 0;
        for (int i = 0; i < s.length(); i++) {
            tmp = tmp + 8;
            if (s.length() - tmp >= 0) {
                num++;//计算字符串可以分割多少个8
                if (s.length() - tmp < 8) {
                    end = s.length() - tmp;//计算按8分割末尾长度
                }
            }
        }
        //字符串长度不到一个8时
        if (num < 1) {
            StringBuilder result = new StringBuilder(s);
            for (int i = 0; i < 8 - s.length(); i++) {
                result.append(0);
            }
            System.out.println(result.toString());
        }
        //字符串长度大于等于一个8时
        if (num >= 1) {
            //分割的8输出
            for (int j = 0; j < num; j++) {
                StringBuilder result = new StringBuilder();
                for (int i = 8 * j; i < 8 * (j + 1); i++) {
                    result.append(s.charAt(i));
                }
                System.out.println(result.toString());
            }
            //按8分割的末尾输出
            if (end > 0) {
                StringBuilder result = new StringBuilder();
                for (int i = num * 8; i < num * 8 + end; i++) {
                    result.append(s.charAt(i));
                }
                for (int i = 0; i < 8 - end; i++) {
                    result.append(0);
                }
                System.out.println(result.toString());
            }

        }

    }
}

发表于 2025-04-12 23:41:45 回复(0)
8位按行截取输出,最后不足8位的补0
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        for (int i = 0; i < s.length()/8; i++) {
            System.out.println(s.substring(i * 8, 8 * (i + 1)));
        }
        if (s.length() % 8 != 0) {
            System.out.print(s.substring(s.length()/8 *8, s.length()));
            for (int i = 0; i < 8 - s.length() % 8; i++) {
                System.out.print("0");
            }
        }
    }
}


发表于 2025-03-26 00:41:41 回复(0)
投机取巧一下,直接拼7个0进去,然后按照原来的字符串长度裁切,剩下的不输出。
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    while (in.hasNext()) {
        String sp = in.nextLine();
        String s = sp + "0000000";
        for (int i = 0; i < s.length() / 8; i++) {
            System.out.println(s.substring(i * 8, (i + 1) * 8));
        }
    }
}


发表于 2025-03-24 17:58:26 回复(4)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

String str = in.nextLine();

while(str.length() != 0){
if(str.length() <= 8) {
System.out.println((str + "00000000").substring(0, 8));
break;
}else {
System.out.println(str.substring(0, 8));
str = str.substring(8);
}
}
}
}
发表于 2025-02-26 21:40:36 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
       
        String firstLine = in.nextLine();
        int length  = firstLine.length();
        StringBuffer sbf = new StringBuffer();
        //如果不能被8整除,补0,变成8的倍数
        if(length%8 != 0){
            for (int i = 1;i<=8-length%8;i++){
                sbf.append("0");
            }
        }
        //8个8个的输出就ok
        firstLine += sbf.toString();
        for(int j = 0;j<firstLine.length();j++){
             System.out.println(firstLine.substring(j,j+8));
            j=j+7;
       }
    }
   
}
发表于 2025-02-11 21:16:00 回复(0)
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        //先求字符串长度
        int length = s.length();
        //按八个输出
        for (int i = 0; i < length; i += 8) {
            String substring;
            //如果满八个
            if(i+8<=length){
              substring=s.substring(i,i+8);
            }
            //不满八个,加0
            else{
                substring=s.substring(i);
                while(substring.length()<8){
                    substring+="0";
                }
            }
          
            System.out.println(substring);

        }

    }
}

发表于 2025-02-05 11:05:35 回复(0)
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
            String str = in.nextLine();
            int strLength = str.length();
            //初始化补位列,补到8的倍数
            //也可以直接加8位0最后截取8的倍数
            if(strLength%8!=0){
                for(int i = 0; i < 8-strLength%8;i++){
                    str +="0";
                }
            }
            //System.out.println(str);
            for (int i = 0; i < strLength; i+=8) {
                System.out.println(str.substring(i,i+8));
            }
    }
}

发表于 2024-10-21 10:42:21 回复(0)
import java.io.*;
/**字符串分隔
 *描述
 * •输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
 *
 * •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
 * 输入描述:
 * 连续输入字符串(每个字符串长度小于等于100)
 *
 * 输出描述:
 * 依次输出所有分割后的长度为8的新字符串
 *
 * 示例1
 * 输入:abc
 *
 * 输出: abc00000
 *
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        int strLen = line.length();
        int index = 0;
        StringBuilder sb = new StringBuilder();
        while (index < strLen) {
            if (index + 8 <= strLen) {
                // 如果剩余字符大于等于8个,直接取出8个字符并追加换行符
                sb.append(line, index, index + 8).append("\n");
            } else {
                // 如果剩余字符不足8个,取出剩余字符并补0,再追加换行符
                String subStr = line.substring(index);
                int len_ = 8 - subStr.length();
                sb.append(subStr);
                for (int i = 0; i < len_; i++) {
                    sb.append("0");
                }
                sb.append("\n");
            }
            index += 8;
        }
        System.out.print(sb.toString());
    }
}


发表于 2024-09-22 11:05:22 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        int tirrger = 0;
        int length = input.length();
        if (length < 8) {
            System.out.print(input);
            for (int i = 8 - length; i > 0; i--) {
                System.out.print("0");
            }
        } else if (length >= 8) {
            for (int a = 0; a < length; a++) {
                if (tirrger < 8) {
                    System.out.print(input.charAt(a));
                    tirrger = tirrger + 1;
                } else {
                    tirrger = 1;
                    System.out.print("\n" + input.charAt(a));
                }
            }
            if (tirrger < 8) {
                for (int b = 0; b < 8 - tirrger; b++) {
                    System.out.print("0");
                }
            }
        }
    }
}

发表于 2024-09-10 22:10:00 回复(0)

问题信息

难度:
400条回答 144913浏览

热门推荐

通过挑战的用户

查看代码
字符串分隔