用StringBuilder会简单很多
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
char[] charArray = string.toCharArray();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (Character.isDigit(c)) {
// 数字前面增加'*'
builder.append("*").append(c);
// 最后一个字符结束
if (i == charArray.length - 1){
builder.append("*");
break;
}
// 能到这里,证明不是最后一个字符
for (int j = i + 1; j < charArray.length; j++) {
// 是数字
if (Character.isDigit(charArray[j])) {
// 最后一个字符
if (j == charArray.length - 1){
builder.append(charArray[j]).append("*");
// 最后一个字符是数字,已经添加,跳出循环
i = j;
break;
}
// 数字添加
builder.append(charArray[j]);
// 非数字
}else {
// 注意这里要添加不是数字的字符
builder.append("*").append(charArray[j]);
i = j;
break;
}
}
continue;
}
// 添加不是数字的字符
builder.append(c);
}
System.out.println(builder);
}
}

查看5道真题和解析