【问题标题】:Java check if first digit of int is 0 [duplicate]Java检查int的第一个数字是否为0 [重复]
【发布时间】:2018-10-10 11:34:52
【问题描述】:

所以问题很简单。 如果int的第一个数字是0,如何检查java;

说我有:

int y = 0123;
int n = 123;

现在我需要一个 if 语句,它对 y 返回 true,对 n 返回 false。

【问题讨论】:

  • 这是不可能的。 0 在编译时被删除。在运行时,这些值完全相同,使您无法进行检查。如果您使用Strings 来存储这些值,这是可能的。
  • 也许您还可以告诉我们为什么您认为前导非重要零对您很重要。从数学上讲,这应该无关紧要。
  • @f1sh 实际上,在这种情况下,以“0”为前缀的 int 会将其转换为八进制值,因此它们在所有情况下都不相同(包括这个,你前缀的那个) 0 的十进制值为 83,因此您可以在一定程度上告诉您。)但我不确定这就是您所追求的,除此之外,无法检测到这在运行时。
  • 我需要这个的原因是因为我正在使用自制日期。如果我有一个日期“03.04.2018”,我想将其打印为 3. 4. 2018,开头没有 0。
  • 但是你是如何存储你的日期的?

标签: java if-statement integer


【解决方案1】:

您的问题很奇怪,原因之一是:int 值不能以 0 开头。但是如果你将你的值存储在一个字符串中,你可以像这样轻松地检查它:

public static void main(String[] args) {
    String y = "0123";
    String n = "123";

    System.out.println(startByZero(y));
    System.out.println(startByZero(n));
}

public static boolean startByZero(String value) {
    return value.startsWith("0");
}

输出:

true
false

编辑: 就像 Oleksandr 建议的那样,您也可以使用:

public static boolean startByZero(String value) {
    return value.charAt(0) == '0';
}

此解决方案比第一个解决方案更有效。 (但我个人认为它的可读性也较差)

【讨论】:

  • int 0 怎么样?是否需要返回 true 或 false ;)
【解决方案2】:

你的

y = 0123

将被视为八进制基数

 n = 123

是一个十进制基数

当你这样做时

if (y == n )

数字将始终基于十进制基数进行比较。

您必须根据您的要求将八进制转换为十进制,反之亦然。

您也可以使用Strings 作为@Valentin 推荐。

【讨论】:

    【解决方案3】:

    这似乎不是主题,而是基于 OP 的评论:

    我需要这个的原因是因为我正在使用自制日期。如果我有一个日期“03.04.2018”,我想将其打印为 3. 4. 2018,开头没有 0。
    呸呸呸


    如果你不想重新发明轮子,你应该使用 java time API 来解析和格式化你的日期:

    LocalDate date = LocalDate.parse("03.04.2018", DateTimeFormatter.ofPattern("MM.dd.yyyy"));
    System.out.println(date.format(DateTimeFormatter.ofPattern("M.d.yyyy")));
    

    2018 年 3 月 4 日

    【讨论】:

      【解决方案4】:

      String.format("%01d",number);
      用于长度为 1 的零填充。
      喜欢0123
      阅读自:https://www.geeksforgeeks.org/java-string-format-examples/

      【讨论】:

        猜你喜欢
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-04
        • 2012-11-19
        • 2015-11-21
        • 1970-01-01
        相关资源
        最近更新 更多