我正在创建一个电话目录,其中包含多个nameEntry
对象,每个对象包含姓氏和电话分机号码。存储数字输入 - 为什么Java扫描器nextInt()允许“无效”零填充整数?
public class nameEntry {
public String surname;
public String number;
public nameEntry(String surname, int number) {
this.surname = surname.toUpperCase();
this.number = String.format("%04d", number);
// converts int literal to 0 filled string of numbers
}
public String toString() {
return surname + "\t" + number; //eg HOOD
}
}
已经读到好的java实践有关存储字母数字我已经设定了nameEntry
对象采取int
作为参数,然后将其转换为填充零String
,因为存储为int
对象会给出他们的性质是不恰当的。但是,这种方法意味着我无法通过此方法创建具有零填充数的新nameEntry
对象,因为它告诉我整数无效;
nameEntry e = new nameEntry(surname, 0123); //this would be flagged as wrong
但是,如果我用一个Scanner nextInt(System.in)
方法,它是完全符合我进入填零位,然后使用该对象创建一个新的nameEntry
对象高兴。
为什么此场景有效?
无论如何,这一切似乎只是为了得到一个零填充的输入字符串 - 允许用户输入单个数字最多4个字符的更好的方法是填零或将进入后自动填零?
'0123'不是一个整数,在Java中 – Brian
@GIJoe从什么时候开始呢? –
它只是@ @ peter.petrov指出的,它是一个八进制。因此,08不存在并且不是有效的整数。 0123仍然存在。 –