用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); } }