2016-10-28 24 views
1

GUIを使用して2進数を10進数に変換するプログラムを作成する必要があります。まず、GUIを使わずにプログラムを作ったところ、うまくいきました。私はGUIと試み、プログラムをしながら私は、任意の入力を大幅に理解される私はプリミティブ型intでlength()を呼び出せません

int BinaryNumber, DecimalNumber; 
      try { 
       BinaryNumber = Integer.parseInt(textFieldtUserBinaryInput.getText()); 

       DecimalNumber = 0; 
        for (int i = 0; i < BinaryNumber.length(); i++); 
        { 
         Character binary = BinaryNumber.charAt(i); 
         String temp = binary.toString(); 
         int tempInt = Integer.parseInt(temp); 
         DecimalNumber = DecimalNumber * 2 + tempInt; 
         textFieldDecimal.setText(Integer.toString(DecimalNumber)); 
        } 




      }catch (NumberFormatException exp){ 

       JOptionPane.showMessageDialog(null, "Invalid format for a binary string - Illegal character"); 
      } 
     } 

「プリミティブ型intに()長さを呼び出すことはできません」というエラーメッセージを取得し続けます。ありがとう!

これは、私はそれがGUIに

public static int ConvertToDecimal(String BinaryNumber) 
{ 
    String pattern = "[0-1]*"; 
    boolean patternMatched = Pattern.matches(pattern, BinaryNumber); 
    if(patternMatched) 
    { 
     int Decimal = 0; 
     for (int d = 0; d < BinaryNumber.length(); d++) 
     { 
      Character binary = BinaryNumber.charAt(d); 
      String temp = binary.toString(); 
      int tempInt = Integer.parseInt(temp); 
      Decimal = Decimal * 2 + tempInt; 
     } 
     return Decimal; 
    } 
+0

エラーはかなりわかりやすく、GUIとは何の関係もありません。あなたには何が分かりませんか? – shmosel

+0

私はその関数でBinaryNumberをどのように動作させるか分かりません。私がプログラムを正常に実行したときには、 (int d = 0; d

答えて

0

をしようとせずに働いていたとき、彼らはオブジェクトではありませんので、あなたはプリミティブ型のメソッドを呼び出すことができない持っていたものです。あなたのコードでは、BinaryNumberDecimalNumberをintと宣言し、次の行にはBinaryNumberInteger.parseInt()の結果が割り当てられます。 BinaryNumberとDecimalNumberをIntegerと宣言することをお勧めします。

* Integerもlength()メソッドがないようです。おそらくあなたはStringで働こうとしていますか?

**それは、彼らはJavaでオブジェクトではありませんので、プリミティブ型のメソッドを持っていないHow to convert binary string value to decimal

+0

はい、文字列として、私はこれで新しく、私はこれに多くの時間を費やして、多分私はいくつかのものを探していますが、これは正常なプログラムとして正常に動作していたとき、 GUI –

+0

コメントとして正しい形式で追加する方法がわからなかったので、元の投稿にコードスニペットを追加しました –

+0

私が追加したリンクを見てください。あなたの変換方法が適切に機能するかどうかはわかりません。さらに、patternMatchedがfalseの場合、intを返すことはありません。 – Ritzh

1

で見てみる価値があるかもしれません。 コードでは、BinaryNumber.length()を実行しています。ここで、BinaryNumberはint型で、以前はBinaryNumberをStringとして使用していました。

関連する問題