【问题标题】:Adding number with zero in left pad在左垫中添加零数字
【发布时间】:2016-07-24 09:03:21
【问题描述】:

首先抱歉愚蠢的问题因为我是java新手。实际上我有一个字符串,其中包含一个数字,我想将它的值增加到某个特定的数字。我很困惑如何解释。下面是我需要做的例子。

我有一个字符串,即:-
“03000001da00000001666666”
我想像下面这样增加它的价值

“03000001da00000002666666”
“03000001da00000003666666”
“03000001da00000004666666” 等等

我在下面写了一个简单的java代码:

但打印错误,即:-
"03000001da2666666"
“03000001da3666666”
“03000001da4666666” 等等

public class Demo {

public static void main(String[] args) {
        String content = "03000001da00000001666666";

        String firstIndex = content.substring(0, 10);
        String requireIndex = content.substring(10,18);
        String lastIndex  = content.substring(18, content.length());
       for(int i = 0; i <= 10;i++){
           System.out.println(firstIndex + (Integer.parseInt(requireIndex)+i) + lastIndex);
       }
    } 
}

需要帮助,请帮帮我。

【问题讨论】:

标签: java loops padding increment


【解决方案1】:

您可以使用printfString 格式(如%08d)将int 填充为8 个字符并带有前导零。你也可以在循环之前解析你的int一次,String.substring(int)(只有一个参数)默认读取String的其余部分。这可能看起来像,

String content = "03000001da00000001666666";
String firstIndex = content.substring(0, 10);
String lastIndex = content.substring(18);
int middle = Integer.parseInt(content.substring(10, 18));
for (int i = 0; i <= 10; i++) {
    System.out.printf("%s%08d%s%n", firstIndex, middle + i, lastIndex);
}

【讨论】:

  • 我认为内部Arrays.fill() 也使用循环。我无法通过下面的答案找出问题所在。你能帮我指出来吗?
【解决方案2】:

试试这个:

public static void main(String[] args) {
    String content = "03000001da00000001666666";

    String firstIndex = content.substring(0, 10);
    String requireIndex = content.substring(10,18);
    String lastIndex  = content.substring(18);
    for(int i = 0; i <= 10;i++){
        System.out.printf("%s%08d%s%n",firstIndex, Integer.parseInt(requireIndex)+i, lastIndex);
    }
}

【讨论】:

  • Integer#parseInt 应该移到循环之外
  • 这里并不是最好的,只是根据他的代码展示这个想法
猜你喜欢
  • 2014-05-26
  • 2011-02-11
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2017-05-30
  • 2017-08-12
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多