为什么在Java中032=26?
我正在写一些代码,我需要详细说明一个类来构建邮政编码。我在葡萄牙的邮政编码以XXXX-032结尾,我将032插入'int'参数,java将032读作26。为什么会发生这种情况 现在,我只使用32而不是032来简化为什么在Java中032=26?,java,int,double,Java,Int,Double,我正在写一些代码,我需要详细说明一个类来构建邮政编码。我在葡萄牙的邮政编码以XXXX-032结尾,我将032插入'int'参数,java将032读作26。为什么会发生这种情况 现在,我只使用32而不是032来简化 public CodigoPostal(int fourDigits, int threeDigits) { this.parcela1 = fourDigits; this.parcela2 = threeDigits; } CodigoPostal code1
public CodigoPostal(int fourDigits, int threeDigits) {
this.parcela1 = fourDigits;
this.parcela2 = threeDigits;
}
CodigoPostal code1 = new CodigoPostal(3421, 32);
System.out.println(code1);
System.out.println(code1.getThreeDigits());
我预计第一个sout是3421-032,第二个是032,但实际是3421-026和26。为什么java将032理解为26?也许032是八进制格式的数字,因为以0开头…0前缀的数字文字将数字视为八进制数字。我们无法重现此问题,因为我们不知道CodigoPostal是如何实现的。请检查是否确实希望将代码作为数字处理。字符串可能更好。@ymonad问题不在这里CodigoPostal@DenysSéguret我知道八进制的032是十进制的24,但是System.out.printlncode1如何输出3421-026呢?好吧,Java的默认toString不会这样做。我将尝试找到一种方法来解决这个问题,但我没有看到一种方法在用户输入032时将八进制转换为整数…使用regexp.s=s.replaceFirst ^0*,修剪前导的0@akshayapandey或只是不要在代码中放零。解析int将忽略前导零。只有在Java代码中的整数文本上加一个八进制,它才会切换到八进制。从根本上说,问题在于试图将int表示为字符串,因为该字符串主要由数字组成,所以它看起来像是表示int的数字/数量。