2016-10-28 4 views
1

Мы должны создать программу, которая преобразует двоичные числа в десятичные числа с помощью графического интерфейса. Сначала я сделал программу без использования графического интерфейса, и он работал нормально. Тогда я попытался с GUI и, делая программу, которую я получаю сообщение об ошибке: «не может ссылаться на длину() на примитивном типа Int»Я получаю: не могу вызывать length() для примитивного типа int

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"); 
      } 
     } 

Любой вклад высоко оценен. Благодаря!

это то, что я имел, когда он работал, не пытаясь сделать графический интерфейс пользователя

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

Ошибка довольно понятна и не имеет никакого отношения к графическому интерфейсу. Что вам непонятно? – shmosel

+0

Я просто не уверен, как иметь BinaryNumber в этой функции. Когда я обычно делал программу, у меня было для (int d = 0; d

ответ

0

Вы не можете вызывать методы примитивных типов, так как они не являются объектами. В вашем коде вы объявляете BinaryNumber и DecimalNumber как int, а в следующей строке BinaryNumber присваивается результат от Integer.parseInt(). Я предлагаю вам объявить BinaryNumber и DecimalNumber как Integer.

* Integer также, похоже, не имеет метода длины(). Возможно, вы пытаетесь работать с String?

** Может быть, стоит взглянуть на How to convert binary string value to decimal

+0

Да, как строка, я новичок во всем этом, и я потратил много времени на это, и, возможно, я пересматриваю некоторые вещи, но это то, что я имел, когда он работал нормально, как обычная программа без GUI –

+0

Я только что добавил фрагмент кода к исходному сообщению, так как не знал, как добавить правильный формат в качестве комментария –

+0

Пожалуйста, взгляните на ссылку, которую я добавил. Я не уверен, работает ли ваш метод преобразования. Кроме того, если patternMatched является false, он никогда не возвращает int. – Ritzh

1

Примитивные типы не имеют методов, так как они не являются объектами в Java. В коде вы делаете BinaryNumber.length(), где BinaryNumber имеет тип int и ранее вы использовали BinaryNumber как String.

Смежные вопросы