2017-10-24 9 views
0

私はバイナリから10進への変換を行っています。ユーザーが不正な引数を入力した場合、無効な文字をキャッチするはずです。ユーザーがバイナリフィールドで1501を入力した場合と同様に、私のプログラムは最初の不正な引数をキャッチして、ユーザーにミスを示すためにそれをユーザーに出力する必要があります。他のパブリッククラスからシンボルを見つけることができません

私の問題は、illegal_char変数を私のisBinaryクラスから私のparseBinaryクラスに渡すことができないことです。

public class Assignment2_gui extends javax.swing.JFrame 
{ 
public int parseBinary(String binary) throws NumberFormatException { 
    if (!isBinary(binary)) { 
     throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal_char); 
    } 
    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 boolean isBinary(String binary) { 
    int illegal_char; 
    for (char ch : binary.toCharArray()) { 
     if (ch != '1' && ch != '0'){ 
      illegal_char = ch; 
      return false; 
     } 
    } 
    return true; 
} 
} 

静的/非静的クラスを使用しようとしましたが問題にはならないと思われます。私はまた使用してみました:

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

しかし、私はまだそれを把握することはできません。私はisBinaryはbooleanクラスなので、決してintを返すことはできないと思いますか?それは、私が違法なチャーをキャッチするために別のクラスを作る必要があるということですか?

答えて

0

あなたが言ったことは正しいです。あなたのメソッドはブール値しか返さないので、無効なcharを返すには、無効なcharを返すか、現在のcharを編集してcharを返すようにしなければなりません。あなたが望むものを返すこと。

+0

私はこれをやろうとしていますが、バイナリ文字列をスキャンするためにcharクラスをどのように構築するのか把握できません。私は 'for(char ch:binary.toCharArray())'をisBinaryメソッドに使用していますが、charメソッドでは機能しませんが、それは止まってしまいます。 –

+0

私はString charAtメソッドとforのループがそれぞれのcharをスキャンして個別に取得すると言っています。 –

+0

私はこれを実装しようとしているし、それを正しく得ることはできません。 Googleはどちらも助けてくれていません。申し訳ありません、私はちょうど長い休憩の後にこのバックアップを選んでいます。 –

関連する問題