【问题标题】:How to parse String into Integer upto two digits in java如何在java中将字符串解析为最多两位数的整数
【发布时间】:2013-12-02 06:46:30
【问题描述】:

我有一个包含 12:02 之类的值的字符串。现在我根据 : 拆分了这个字符串 并存储到数组中。现在我必须将这些数组值解析为整数.. 在从字符串解析为整数时,我的 02 仅在需要 02 时变为 2。 我不知道该怎么做。

这是我的代码..

time = request.getParameter("time");
    System.out.println(time);

    String[] timearr = time.split(":");
    hourset=Integer.parseInt(timearr[0]);
    minuteset=Integer.parseInt(timearr[1]);

minutset 的值是不同的..

请帮助我。 提前谢谢..

【问题讨论】:

  • 你遇到了什么错误?当然,如果你把 02 转换成 Integer,就会变成 2
  • 你只需要它来输出吗?否则不会有什么不同。
  • 想要02就不要解析
  • Integer.parseInt() 会这样做(02 变为 2),因为 02 类似于 2。那么转换为 int 后您的下一步是什么?
  • 类似问题请见here

标签: java string parsing integer


【解决方案1】:

你可以用这个 如果您想在屏幕上看到“02”,请使用“%02d”模式对其进行格式化, System.out.println("%02d", 数据)

【讨论】:

    【解决方案2】:

    您将数字 (2) 的值与其字符串表示(可以是 2、02、002、000002、0x02 等)混淆了。

    如果您要处理时间,请使用更适合该时间的类之一,例如日期和日历。

    如果您真的想保留 '02',请使用 String 而不是 int。

    【讨论】:

      【解决方案3】:

      你必须区分两件事:数字的样子和数字是什么。例如,数字 10 可能看起来像“010”、“10”、“A”、“1e1”,但它仍然是同一个数字。

      当您使用System.out.printf("%d", minuteset) 在屏幕上输出数字时,您要求将其格式化为最简单的格式 - “2”。如果您想在屏幕上看到“02”,请将其格式化为"%02d" 模式:

      System.out.printf("%02d", minuteset)

      【讨论】:

      • 只是为了向OP澄清一些事情,“%02d”看起来像通缉号码02的原因是巧合。在% 之后,0 表示用零填充,2 表示使其至少宽两个字符,d 表示“十进制整数”。例如。 System.out.printf("%02d", 7); 输出 07.
      【解决方案4】:

      这是不可能的。 02 只变成 2..

      【讨论】:

        【解决方案5】:

        02 不是整数。 2 是一个整数。在这种情况下你不能使用 Integer 。但是如果你想将它存储在 Integer 中,你必须再次解析(你必须编写一个自定义解析器,将 0 插入一个数字的第一个数字)并将其显示为 String。

        【讨论】:

          【解决方案6】:

          这是因为实际数字没有前导零,因为它们根本没有意义并且是多余的。如果是整数,如果您自己指定前导零,那么它将被视为八进制值。

          如果你想用前导零显示数字,那么你可以使用字符串格式来实现这一点。

          int num = 123;
          string leadingZeroes = String.format("%05d", num);
          

          【讨论】:

            【解决方案7】:

            数值数据类型根本无法区分202。底层位模式是相同的。如果您尝试System.out.println(02);,您会看到2 作为输出,因为它无法区分。

            数字前面是否加零是格式问题,只有在再次将数字输出为字符串后才能控制数字的格式。例如。试试:

            String time2 = String.format("%02d:%02d", hourset, minuteset);
            

            你会再次得到“12:02”。

            【讨论】:

              【解决方案8】:

              黄金法则:如果您有数字并且您知道不会对数字进行任何数学运算或数据库操作,则应将这些数字保留为字符串。我不知道这是否是一个真正的黄金法则,但这就是我遵循的。哈哈。

              字符串有很多强大的操作方式,这就是为什么如果没有数学/数据库操作我更喜欢字符串。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-08-11
                • 1970-01-01
                • 1970-01-01
                • 2012-04-13
                • 1970-01-01
                • 2012-06-27
                相关资源
                最近更新 更多