我得到:不能在原始类型int上调用length()

时间:2016-10-28 02:44:24

标签: java user-interface

我们必须制作一个程序,使用GUI将二进制数转换为十进制数。首先,我在没有使用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");
            }
        }

非常感谢任何输入。谢谢!

这是我在没有尝试做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;
    }

2 个答案:

答案 0 :(得分:1)

原始类型没有方法,因为它们不是Java中的对象。 在您的代码中,您正在使用BinaryNumber.length(),其中BinaryNumber的类型为int,之前您使用BinaryNumber作为String。

答案 1 :(得分:0)

您不能在原始类型上调用方法,因为它们不是对象。在您的代码中,您将BinaryNumberDecimalNumber声明为int,并在下一行BinaryNumber中为Integer.parseInt()分配结果。我建议你将BinaryNumber和DecimalNumber声明为Integer

* Integer似乎也没有length()方法。也许您正在尝试使用String

**值得一看How to convert binary string value to decimal