2012-11-30 6 views

답변

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

s.hasNextLong() -> s.hasNextLong (8) – hoaz

+0

@hoaz 정말 좋은 지적입니다. – assylias

+0

실제로는 일관성이 없기 때문에 기수도없이 작동합니다. – hoaz

0

documentation을 읽어보십시오. 스캐너의 기본 기수를 사용합니다. 기본값이 허용되지 않으면 useRadix(int radix) 메소드를 사용하여 기본값을 변경하거나 nextLong(int radix)을 사용하여 기수의 임시 변경을 수행 할 수 있습니다.

1

당신은 Scanner#useRadix(radix) 방법을 사용하여 디폴트 기수를 설정하거나 Scanner#hasNextLong(radix)Scanner#nextLong(radix) 방법에 명시 적으로 기수를 전달할 수 있습니다.

관련 문제