为什么java不能呢。util。扫描仪是否将0700视为八进制文字?
public static void main(String argv[]){
String a="0700";
Scanner s = new Scanner(a);
while(s.hasNextLong()){
System.out.print(s.nextLong()+",");
}
结果将是“700”,而不是“448”
# 1 楼答案
您可以使用
Scanner#useRadix(radix)
方法设置默认基数,或者显式地将基数传递给Scanner#hasNextLong(radix)
和Scanner#nextLong(radix)
方法# 2 楼答案
默认情况下,扫描器假定数字以10为基数,并忽略前导的0。如果需要,可以指定另一个基数-下面的代码打印448:
# 3 楼答案
阅读documentation。它表示将使用扫描仪的默认基数。如果默认值不可接受,那么可以使用
useRadix(int radix)
方法更改它,或者使用nextLong(int radix)
临时更改基数