java - 异常和parseInt

标签 java exception try-catch parseint

为什么我的第一个方法“inputNumber”返回无限输出“这不是一个有效的数字” 而第二种方法返回问题“输入有效数字:”

我不明白为什么使用 parseInt 的方法不做同样的事情...... 它们都抛出异常并且都执行“catch”。

这是我的代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("you typed the number: " + inputNumber(input));

}

public static int inputNumber(Scanner input) {
    int num = 0;
    while (num == 0) {
        System.out.print("Type a number: ");
        try {
            return input.nextInt();
        } catch (Exception e) {
            System.out.println("this is not a valid number");
        }
    }
    return num;
}

public int readNumber(Scanner input) {
    boolean running = true;
    while (running) {
        System.out.print("Write a number: ");

        try {
            int num = Integer.parseInt(input.nextLine());
            return num;
        } catch (Exception e) {
            System.out.println("this is not a valid number");
        }
    }
    return 0;
}
}

最佳答案

Please make few changes:
1. No need of num variable in inputNumber() method,
2. Make readNumber() method static.

您也可以为 inputNumber() 方法尝试此逻辑。

public static int inputNumber(Scanner input) {
   System.out.print("Type a number: ");
    try {
        return input.nextInt();
    } catch (Exception e) {
        System.out.println("this is not a valid number");
    }
    return 0;
}

关于java - 异常和parseInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581604/

相关文章:

c# - 滥用 try/catch

java - 当我在 DBPedia 上运行查询时 CATCH block 中的条件

ruby-on-rails - Rails ActiveJob - 在 ActionMailer::DeliveryJob 中处理异常的好方法是什么

c++ - 带有字符串和 bad_alloc 检查的构造函数

java - 比较器违反一般契约(Contract)

java - Android USB 主机无法读取和写入 Cp2102SerialDriver 数据

java - 空检查链与捕获 NullPointerException

powershell - try catch : Why I'm still having uncaught errors? [duplicate]

java - 如何将文本字段中一次可见的字符数限制为小于文本字段的宽度?

java - 如何在不使用默认身份 validator 的情况下使用 JAXWS 访问受密码保护的 WSDL?