2017-10-24 15 views
-2

バイナリからデシマルへのコンバータを作成しています。ユーザが不正な引数を入力した場合、無効な文字をキャッチするはずです。私は、0または1以外の文字をキャッチする正しい方法があると信じています。 しかし、このメソッドを主なメソッドparseBinaryに実装しようとすると、不正な(iChar)の「シンボルが見つかりません」と表示されます。JAVA:メソッドが別のメソッドから値を見つけることができません

parseBinaryにパラメータを追加することはできません。ユーザは、0と1の文字列を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)); 

をやってあなたは 'へbinary'を渡す必要があります言ったようにそれは、 'iChar'ではなく – Mureinik

+0

そのような単純な解決策です。私にそれを指摘していただきありがとうございます! –

答えて

1

@mureinikあなたは

throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(binary)); 
関連する問題