2017-10-24 5 views
-2

그래서 이진수를 10 진수 변환기로 만들고 사용자가 잘못된 인수를 입력하면 잘못된 문자를 잡아야합니다. 0 또는 1이 아닌 문자를 잡는 올바른 방법이 있다고 생각합니다. 그러나이 메서드를 기본 메서드 parseBinary에 구현하려고하면 불법 (iChar)에 대해 "심볼을 찾을 수 없습니다"라고 표시됩니다.JAVA : 메서드가 다른 메서드에서 값을 찾을 수 없습니다.

parseBinary에 더 많은 매개 변수를 추가 할 수 없습니다. 사용자는 0과 1 중 하나의 문자열 만 입력해야하기 때문에. 이 제한으로 인해이 메소드를 아무 것도 만들지 않았다면 궁금합니다. 그러나 이것이 내가 그것에 대해 알고있는 유일한 방법입니다. 나는 초보자이다. 모든/모든 도움은 매우 감사하겠습니다.

public static int parseBinary(String binary) throws NumberFormatException { 
    if (!isBinary(binary)) { 
     throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(iChar)); 
    } 
    int power = 0; 
    int decimal = 0; 
    for (int i = binary.length() - 1; i >= 0; i--) { 

     if (binary.charAt(i) == '1') { 
      decimal += Math.pow(2, power); 
     } 
     power++; 
    } 
    return decimal; 
} 


public static boolean isBinary(String binary) { 
    for (char ch : binary.toCharArray()) { 
     if (ch != '1' && ch != '0'){ 
      return false; 
     } 
    } 
    return true; 
} 

public static char illegal(String iChar) 
{ 
    char test = 0; 
    char arr[] = iChar.toCharArray(); 
    for(char cha : arr) 
    { 
     if (cha != '1' && cha != '0') 
     { 
      test = cha; 
     } 
    } 
    return test; 
} 
+3

에 불법적 인 방법

변화가 바이너리 통과해야 대신

throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(iChar)); 

을하는 말했듯 iChar가 아닌. – Mureinik

+0

그런 간단한 해결책. 나에게 그것을 지적 해 주셔서 감사합니다! –

답변

1

는 @mureinik 당신은에`binary`를 통과해야 당신이

throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(binary));