根据题意,输出的字符串需要在数字字符左右加上''。
我们设置一个状态,为数字和非数字两种状态(boolean值)。
当我们遍历字符串的时候 :
1、当前字符为数字,读取状态,如果状态为非数字,表明上一个字符不是数字,所以当前字符为数字首位,需要在前面加个'';如果状态为数字,则不需要添加'',只需输出。
2、当前字符为非数字,读取状态,如果状态为数字,表明上一个字符是数字,所以当前字符为非数字首位,需要在前面加个'';如果状态为非数字,则不需要添加'*',只需输出。
程序如下:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String str = sc.next(); StringBuilder sb = new StringBuilder(); boolean isDigit = false; // 定义状态,用来存储当前字符为数字或者非数字,默认false为非数字 for (int i = 0; i < str.length(); i++) { // 遍历字符串 char c = str.charAt(i); if (Character.isDigit(c)) { // 数字 if (!isDigit) { // 表明上一个字符为非数字,当前字符为数字首位,需要添加'*'输出 sb.append('*'); } isDigit = true; } else { // 非数字 if (isDigit) { // 表明上一个字符为数字,当前字符为非数字首位,需要添加'*'输出 sb.append('*'); } isDigit = false; } sb.append(c); } if (isDigit) { // 遍历结束,需要判断最后一位是否为数字,如果是,需要添加'*'输出 sb.append('*'); } System.out.println(sb.toString()); } } }