我不明白为什么当我编译这段代码时,我得到了错误的邮政编码。
John Smith
486 test St.
Yahoo, MA 898 - 2597JohnSmith
486 test St.
Yahoo, MA 898 2597
代码
public class test
{
public static void main(String[] args) {
String firstName = "John";
String lastName = "Smith";
int streetNumber = 486;
String streetName = "test St.";
String city = "Yahoo";
String state = "MA";
int zip = 01602;
int zipplus4 = 2597;
System.out.print(firstName + " " + lastName + "\n" + streetNumber + " " + streetName + "\n" + city + ", " + state + " " + zip + " - " + zipplus4);
System.out.println(firstName + lastName);
System.out.println(streetNumber + " " + streetName);
System.out.println(city + ", " + state + " " + zip + " - " + zipplus4);
}
}
答案 0 :(得分:5)
当您指定一个前导零的数字时,它将被视为八进制(基数为8,而不是十进制基数为10或十六进制数为16)。
01602 octal == 898 decimal
由于Java并未考虑使用Zip代码,为了获得所需效果,请删除前导零,并在打印时对其进行格式化:
System.out.println(city + ", " + state + " " + new java.text.NumberFormat("00000").format(zip) + " - " + new java.text.NumberFormat("0000").format(zipplus4));
答案 1 :(得分:3)
使那些邮政编码为String而不是int,它会没问题。
public class test
{
public static void main(String[] args)
{
String firstName = "John";
String lastName = "Smith";
int streetNumber = 486;
String streetName = "test St.";
String city = "Yahoo";
String state = "MA";
String zip = "01602";
String zipplus4 = "2597";
System.out.print(firstName + " " + lastName + "\n" + streetNumber + " " + streetName + "\n" + city + ", " + state + " " + zip + " - " + zipplus4);
System.out.println(firstName + lastName);
System.out.println(streetNumber + " " + streetName);
System.out.println(city + ", " + state + " " + zip + " - " + zipplus4);
}
}
结果:
John Smith
486 test St.
Yahoo, MA 01602 - 2597JohnSmith
486 test St.
Yahoo, MA 01602 - 2597
Process finished with exit code 0
我还建议你将它们封装成合理的物体。为什么在使用Address类时处理String原语? Java的面向对象;更好地考虑对象。
答案 2 :(得分:2)
01602
- 开头的这个0
表示您使用的是八进制数而不是十进制数。删除它,你会没事的: - )。
BTW IntelliJ IDEA甚至会在此处显示警告。
答案 3 :(得分:0)
您应该使用String
类型的zip和zipplus4。
如果您无法更改类型,则可以在println语句中使用以下内容
String.format("%05d", zip)
答案 4 :(得分:0)
取下前导零〜或使其成为一个字符串
答案 5 :(得分:0)
Zipcode不应该存储在数值数据类型中,因为它实际上不是你想要进行数学运算的东西,而是将它存储为字符串,它会正常工作。