我对Java很陌生,它试图编写一个程序供用户输入数字并将其与一组规则进行比较。我在JOptionPane之后使用了parse.Int,但是当我尝试一个'if'语句时,我收到了一个错误的操作数类型。第一个类型字符串,第二个类型整数。我不明白,因为我使用了解析为什么不起作用。我知道我想念什么。
answer = 0;
while(answer == JOptionPane.YES_OPTION)
JOptionPane.showMessageDialog(null, " enter a number between 1-50", "by ...`enter code here`",
JOptionPane.PLAIN_MESSAGE);
String inputNumber;
inputNumber = JOptionPane.showInputDialog("Input an integer from one to 50: ");
Integer.parseInt(inputNumber);
if (inputNumber == 0 || inputNumber >= 51);
答案 0 :(得分:3)
您忽略了Integer.parseInt
的返回值。 inputNumber
仍然是String
变量,而不是数字。为了更清楚,我将其重命名:
// This variable is the string representation...
String inputText = JOptionPane.showInputDialog("Input an integer from one to 50: ");
// ... and now inputNumber is the integer value parsed from inputText
int inputNumber = Integer.parseInt(inputText);
if (inputNumber < 1 || inputNumber > 50)
{
...
}
请注意,如果用户未输入整数,Integer.parseInt
将引发异常,但这可能需要在单独的步骤中解决...
答案 1 :(得分:0)
这是因为您正在将一个String(inputNumber)与一个int值进行比较。 试试这个
int myint = Integer.parseInt(inputNumber);
if (myint == 0 || myint >= 51) {
...
}
答案 2 :(得分:0)
Integer.parseInt
是一个函数,它将返回int
。但是,您作为参数传递的变量inputNumber
在此情况下仍将是String
变量。因此,您需要将Integer.parseInt
的结果赋给类型为int
的新变量,然后将该变量用于比较。
答案 3 :(得分:0)
查看代码中的注释。另外,您需要在Integer.parseInt周围进行一次尝试/捕捉或抛出(不知道您想在哪里获得它):
answer = 0;
while(answer == JOptionPane.YES_OPTION)
...
String inputNumber;
inputNumber = JOptionPane.showInputDialog("Input an integer from one to 50: ");
//replace:
//Integer.parseInt(inputNumber);
int number = Integer.parseInt(inputNumber);
//replace:
//if (inputNumber == 0 || inputNumber >= 51);
if (number == 0 || number >= 51);