Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Java中032=26?_Java_Int_Double - Fatal编程技术网

为什么在Java中032=26?

为什么在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

我正在写一些代码,我需要详细说明一个类来构建邮政编码。我在葡萄牙的邮政编码以XXXX-032结尾,我将032插入'int'参数,java将032读作26。为什么会发生这种情况

现在,我只使用32而不是032来简化

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的数字/数量。