gpt4 book ai didi

java - 将字符串分成组

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:25 25 4
gpt4 key购买 nike

我需要编写一个方法groupify,它有两个参数:

  1. 我想分成组的字符串。
  2. 每组的字母数。

因此,代码可能会打印一个字符串,该字符串由按照第二个参数指定的字母数分成几组的输入字符串组成,如果输入字符串中没有足够的字母来填充所有组,它应该用 "x" 填充最后一组,所以如果我 groupify("HELLODANY",2),它必须返回 "HE LL OD AN YX"

我的代码如下:

package com.company;
import java.util.Random;

public class Main {
public static String gropify(String message,int number) {
String result="";
int len =message.length();
int s=0;
int n=3;
for(int x=0;x<len;++n) {
s = s + number;
result = result + message.substring(x,s);
}
return result;
}

public static void main(String[] args) {
String message= "HELLODANY";
System.out.println(gropify(message, 3));
}
}

但是我得到以下异常:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 12

我应该改变什么?

最佳答案

我更喜欢 StringBuilder 而不是许多 String 连接(那些创建临时不可变的 String 实例)。接下来,您可以测试当前索引是否可以被 number 整除,如果是则添加一个空格;然后将实际字符附加到 StringBuilder。最后,通过计算消息长度除以数字的余数来添加填充 - 附加那么多 X(s)。喜欢,

public static String gropify(String message, int number) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < message.length(); i++) {
if (i != 0 && i % number == 0) {
sb.append(' ');
}
sb.append(message.charAt(i));
}
int pad = message.length() % number;
for (int i = 0; i < pad; i++) {
sb.append('X');
}
return sb.toString();
}

请注意,您当前的方法存在缺陷,您在循环体中添加了 s,当您点击 12 时,您超出了 message< 的长度.

关于java - 将字符串分成组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46019766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com