Java中的求和,同时保留不必要的零[重复]

jv4diomz  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(107)

此问题已在此处有答案

How can I pad an integer with zeros on the left?(19回答)
2天前关闭。
我试图做一个程序,给定一个字符串,如“hi99”,它会返回“hi100”,所以基本上是在最后一个点的数字加1。

public static String incrementString(String str) {
        String nonNumber = "";
        String number = "";
        int numberInt = 0;
        for(int i = str.length() - 1 ; i >= 0 && Character.isDigit(str.charAt(i)); i--){
            nonNumber = str.substring(0, i);
            number  = str.substring(i);     
        }   
        numberInt = Integer.valueOf(number) + 1;
        number = Integer.toString(numberInt);
        return (nonNumber + number);
    }

我的想法是把有数字的部分和没有数字的部分分开。然后在有数字的部分加1。这就是我下面所做的。问题是,当Java看到001时,而不是在最后一个位置加1,忽略其余的。结束值是2。因此,我只是想看看是否有一种方法可以避免删除这些零。

wqsoz72f

wqsoz72f1#

几年前也有过类似的任务。试试这个!

public String inc_string(String src){
    int c = 0;
    boolean inc_left = false;

    StringBuilder sb = new StringBuilder(src);
    for (c = sb.length() - 1; c > 0; c--){
        char tc = sb.charAt(c);
        if (!Character.isDigit(tc) && inc_left){
            sb.insert(c + 1, '1');
            return sb.toString();
        }
        if (Character.isDigit(tc)){
            inc_left = false;
            if (tc >= '9'){
                tc = '0';
                inc_left = true;
            }
            else{
                tc++;
            }
            sb.setCharAt(c, tc);
            if (!inc_left){
                return sb.toString();
            }
        }
    }
    return src;
}

相关问题