Java 如何修复使用“parseInt()”的if语句,以便激活else部分,并且我的程序不会失败?

Java 如何修复使用“parseInt()”的if语句,以便激活else部分,并且我的程序不会失败?,java,bluej,Java,Bluej,我编写了一个程序,要求用户输入数字,然后在确保两个值都是数字后,告诉用户输入的两个数字中哪一个更大。这是循环的。问题是,当用户输入无效的内容时,程序会关闭,而不是引用我的else语句。我认为这是因为字符串中的文本值无法使用parseInt进行处理,因此程序没有意识到文本值不是有效数字,而是失败了。我正在使用BlueJ来制作这个程序,如果它能帮助任何人解决这个问题的话。我也乐于接受别人告诉我如何使我的程序更高效/更容易编码。我是一个初学者 import java.util.Scanner; pub

我编写了一个程序,要求用户输入数字,然后在确保两个值都是数字后,告诉用户输入的两个数字中哪一个更大。这是循环的。问题是,当用户输入无效的内容时,程序会关闭,而不是引用我的else语句。我认为这是因为字符串中的文本值无法使用parseInt进行处理,因此程序没有意识到文本值不是有效数字,而是失败了。我正在使用BlueJ来制作这个程序,如果它能帮助任何人解决这个问题的话。我也乐于接受别人告诉我如何使我的程序更高效/更容易编码。我是一个初学者

import java.util.Scanner;
public class TemperatureDriver {
    public static void main(String[] args) {
        while (true) {
            Scanner keyInput = new Scanner(System.in); 
            System.out.print("Enter a number"+ "\n");
            String number_one = keyInput.next();

            if (Integer.parseInt(number_one) <=0 || Integer.parseInt(number_one) > 0) {
                System.out.print("Enter another number" + "\n");
                String number_two = keyInput.next();     

                if(Integer.parseInt(number_two) <=0 || Integer.parseInt(number_two) > 0){

                    if (Integer.parseInt(number_one) > Integer.parseInt(number_two)) {
                        System.out.print(number_one + " is greater than " + number_two + "\n" + "\n");
                    } else if(Integer.parseInt(number_one) < Integer.parseInt(number_two)){
                        System.out.print(number_one + " is less than " + number_two + "\n" + "\n");
                    } else if(Integer.parseInt(number_one) == Integer.parseInt(number_two)){
                        System.out.print(number_one + " is equal to " + number_two + "\n" + "\n");
                    }                

                } else {
                    System.out.println("Invalid number!"+ "\n");
                }  

            } else {
                System.out.println("Invalid number!"+ "\n");
            }  

        }
    }
}
调用parseInt的代码应该嵌入到try块中,try块后面应该跟一个catch块来捕获NumberFormatException

try {
    if (Integer.parseInt(number_one) <= 0 || Integer.parseInt(number_one) > 0) {
      System.out.print("Enter another number" + "\n");
      String number_two = keyInput.next();

      if (Integer.parseInt(number_two) <= 0 || Integer.parseInt(number_two) > 0) {

        if (Integer.parseInt(number_one) > Integer.parseInt(number_two)) {
          System.out.print(number_one + " is greater than " + number_two + "\n" + "\n");
        } else if (Integer.parseInt(number_one) < Integer.parseInt(number_two)) {
          System.out.print(number_one + " is less than " + number_two + "\n" + "\n");
        } else if (Integer.parseInt(number_one) == Integer.parseInt(number_two)) {
          System.out.print(number_one + " is equal to " + number_two + "\n" + "\n");
        }

      } else {
        System.out.println("Invalid number!" + "\n");
      }

    } else {
      System.out.println("Invalid number!" + "\n");
    }
  } catch (NumberFormatException e) {
    System.out.println("Not a valid number");
  }

阅读有关异常以及如何处理它的信息