我们必须制作一个程序,使用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;
}
答案 0 :(得分:1)
原始类型没有方法,因为它们不是Java中的对象。 在您的代码中,您正在使用BinaryNumber.length(),其中BinaryNumber的类型为int,之前您使用BinaryNumber作为String。
答案 1 :(得分:0)
您不能在原始类型上调用方法,因为它们不是对象。在您的代码中,您将BinaryNumber
和DecimalNumber
声明为int,并在下一行BinaryNumber
中为Integer.parseInt()
分配结果。我建议你将BinaryNumber和DecimalNumber声明为Integer
。
* Integer
似乎也没有length()方法。也许您正在尝试使用String
?