使用解析将字符串转换为Int值:

时间:2019-02-04 15:15:19

标签: java

我对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);

4 个答案:

答案 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);