Java检查int的第一个数字是否为0
所以问题很简单。 如何在java中检查Java检查int的第一个数字是否为0,java,if-statement,integer,Java,If Statement,Integer,所以问题很简单。 如何在java中检查int的第一位是否为0 假设我有: int y = 0123; int n = 123; 现在我需要一个if语句,它将为y返回true,为n返回false。您的问题非常奇怪,原因之一是:int值不能以0开头。但如果将值存储在字符串中,则可以像下面这样轻松地检查: public static void main(String[] args) { String y = "0123"; String n = "123"; System.
int
的第一位是否为0
假设我有:
int y = 0123;
int n = 123;
现在我需要一个if语句,它将为
y
返回true,为n
返回false。您的问题非常奇怪,原因之一是: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';
}
这个解决方案比第一个更有效。(但我个人认为它的可读性也比较差)
y = 0123
将被视为八进制但是
n = 123
是一个十进制基数
现在当你这么做的时候
如果(y==n)
数字将始终基于十进制基数进行比较
您必须根据您的要求进行从八进制到十进制的转换,或者从八进制到十进制的转换
您还可以使用@Valentin推荐的Strings
。String.format(“%01d”,number)用于长度为1的零填充。
比如0123
阅读:这似乎与主题无关,但基于OP的评论:
我之所以需要它,是因为我在处理自制的约会。如果我有一个日期“2018年4月3日”,我想把它打印成3。4.2018年,开始时没有0。
洛姆姆普
如果您不想重新发明轮子,您应该使用java时间API来解析和格式化日期:
LocalDate date = LocalDate.parse("03.04.2018", DateTimeFormatter.ofPattern("MM.dd.yyyy"));
System.out.println(date.format(DateTimeFormatter.ofPattern("M.d.yyyy")));
2018年4月3日
那是不可能的。0在编译时被删除。在运行时,这些值完全相同,因此无法进行检查。如果您使用
String
s来存储这些值,这是可能的。也许您还可以告诉我们为什么您认为前导的非重要零对您很重要。从数学上讲,这不重要。@f1sh实际上,在这种情况下,在int前面加上“0”会将其转换为八进制值,因此它们在所有情况下都不相同(包括这一种情况,在0前面加上0的那一种会有83的十进制值,所以你可以在一定程度上分辨出来。)但我不确定你要的是这个,除此之外,在运行时不可能检测到这一点。我之所以需要它,是因为我正在处理自制的日期。如果我有一个日期“2018年4月3日”,我想把它打印成3。4.2018年,开始时没有0。但是您如何存储日期?int0
呢?是否需要返回true或false;)