public static void main(String argv[]){
String a="0700";
Scanner s = new Scanner(a);
while(s.hasNextLong()){
System.out.print(s.nextLong()+",");
}
结果将是“700”,而不是“448”。
答案 0 :(得分:5)
默认情况下,扫描程序假定该数字位于基数10并忽略前导0。如果需要,您可以指定另一个基数 - 下面的代码打印448:
public static void main(String[] args) {
String a = "0700";
Scanner s = new Scanner(a);
while (s.hasNextLong(8)) { //make sure the number can be parsed as an octal
System.out.print(s.nextLong(8)); //read as an octal value
}
}
答案 1 :(得分:1)
您可以使用Scanner#useRadix(radix)
方法设置默认基数,或明确将基数传递给Scanner#hasNextLong(radix)
和Scanner#nextLong(radix)
方法。
答案 2 :(得分:0)
阅读documentation。它说它将使用扫描仪的默认基数。如果默认值不可接受,则可以使用useRadix(int radix)
方法更改默认设置,或使用nextLong(int radix)
暂时更改基数。