java - 为什么 java.util.Scanner 不能将 0700 视为八进制文字?

标签 java octal

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

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

最佳答案

默认情况下,扫描器假定数字以 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
    }
}

关于java - 为什么 java.util.Scanner 不能将 0700 视为八进制文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647618/

相关文章:

java - 我在理解 Head First Java Bean 解释时遇到的问题

java - Gson - 无法解析的日期

java - 为什么不能取消引用 lambda 表达式?

java - Spring MVC 如何解析和验证处理程序方法参数?

c - c中八进制转义序列的范围是多少?

Javascript 将 Unicode 八进制字节转换为文本

python - 正则表达式和八进制字符

java - 无法让图像显示在 Swing 中

java - Java 的 Base8 API

binary - 帮助!我不知道二进制、十六进制、八进制和按位