0
   public static void main(String argv[]){
         String a="0700";
         Scanner s = new Scanner(a);
         while(s.hasNextLong()){
              System.out.print(s.nextLong()+",");
         }

结果将是“700”,而不是“448”。

4

3 回答 3

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
    }
}
于 2012-11-30T15:01:51.550 回答
1

您可以使用方法设置默认基数Scanner#useRadix(radix)或将基数显式传递给Scanner#hasNextLong(radix)Scanner#nextLong(radix)方法。

于 2012-11-30T15:04:45.663 回答
0

阅读文档。它说它将使用扫描仪的默认基数。如果默认值不可接受,那么您可以使用useRadix(int radix)方法更改它或使用nextLong(int radix)临时更改基数。

于 2012-11-30T15:04:33.197 回答