【问题标题】:How to store '09' in integer [duplicate]如何以整数存储'09'[重复]
【发布时间】:2014-01-28 16:06:52
【问题描述】:

我正在开发一个 java 程序,我需要将一些从 0 到 16 的整数存储为 00、01等等……

现在,当我为 9 存储“09”或为 8 存储“08”时,它开始给我错误。

来自thisthis 的问题我知道这是八进制表示法。

我的问题是:

有没有办法在 JAVA 中以整数形式存储 08 或 09?

我必须将数字存储为 00、01 .. 只有什么是替代品?

非常感谢!

【问题讨论】:

  • 为什么需要这种格式?输出还是别的什么?
  • 你想在什么情况下使用00、01等?
  • 您不太可能需要像那样存储它们,您可能需要像那样显示它们 - 这样公平吗?
  • @Nullpointer:就整数值而言,您认为 08 与 8 有何不同?
  • 编写一个 print 或 toString 方法来处理以您想要的方式打印您的整数...

标签: java


【解决方案1】:

用整数存储您的数字,如果您需要显示这些值,请将它们转换为字符串。字符串可以很容易地格式化以显示前导零。

    int num = 5;
    System.out.println(String.format("%02d", num));

【讨论】:

  • 将其存储在字符串中可能不是最好的方法。
  • 你可以用“casting”替换“storing”这个词;)
  • 不需要将其存储为字符串..
  • 不够好 - 10-16 怎么办?您是否应该提出一些格式化值的建议。
  • 虽然你们都没有理解我真正的问题(人们只是投了反对票,甚至没有完全阅读问题),并且给出的解决方案都没有完美满足我的需求;我认为这是最相关的解决方案,所以我接受了!
【解决方案2】:

不,除非您将它们存储为字符串,否则您不能这样做。 或者将它们存储为常规 int 并使用字符串格式作为输出。

【讨论】:

    【解决方案3】:

    试试String.format()

    int num = 9;
    System.out.println(String.format("%02d", num));
    

    %02d

    • 0 - 用零填充
    • 2 - 将宽度设置为 2

    输出

    09
    

    【讨论】:

    • 实数的格式是什么,例如:09.23
    【解决方案4】:

    尝试将09 存储为数值是没有意义的(除非你真的是指八进制的9,这更没有意义)。您所指的09 值是9 值的表示。数值与它们的表示方式没有任何关系。您可以将值 nine 以十进制表示为 9099.0,或以八进制表示为 011,但值保持不变,nine,它应该存储在Integer 变量(或int)中。

    Integer 变量中的数字作为数值存储,并以您希望的格式输出它们,例如String.format()

     Integer i = 9; // or Integer i = 011; whatever
     System.out.println(String.format("%02d", i));
    

    【讨论】:

      【解决方案5】:

      听起来你正在尝试做错事;但是有很多可能的方法。

      案例 1:您正在尝试存储日期组件并将其显示为两位数。在这种情况下,请改用java.util.Calendar

      案例 2:您尝试存储版本号的一部分。在这种情况下,您应该将其存储为 String,而不是 int

      案例 3:您正在尝试存储一些其他类型的数据,并且需要以前导零显示它。为此,您应该使用PrintStream.printfString.format b 来执行此操作。 System.out.printf("%1$2d", myInteger) 会将数字输出为两位数,如果需要,添加前导零。

      【讨论】:

        猜你喜欢
        • 2013-06-08
        • 2014-03-29
        • 2017-03-03
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多