java - 如何正确退出线程“main”中的 JOptionPanel 异常 java.lang.NumberFormatException: null
问题描述
我正在尝试创建一个用户必须输入整数的 GUI。如果用户输入一个非整数,它会提示 GUI。我也希望它退出。当我让它退出时,我得到这个错误:
线程“主”java.lang.NumberFormatException 中的异常:null。
我有点菜鸟,需要一些指导:)
public class Generator
{
public static void main (String[] args)
{ String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
int analysisLevel = Integer.parseInt(input);
try
{
if (analysisLevel >= 0)
{
System.out.println(analysisLevel);
}
else
{
input = JOptionPane.showInputDialog("Enter Desired Analysis level");
}
}
catch (Exception e)
{
System.out.println("Input was no number" + e);
System.exit(0);
}
System.exit(0);
}
}
解决方案
问题是您将可能导致异常 ( ) 的一行留在int analysisLevel = Integer.parseInt(input);
了 try/catch 块之外。你需要把它移到里面:
String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
try
{
int analysisLevel = Integer.parseInt(input);
if (analysisLevel >= 0) {
System.out.println(analysisLevel);
} else {
input = JOptionPane.showInputDialog("Enter Desired Analysis level");
}
}
catch (Exception e)
{
System.out.println("Input was no number. " + e);
}
此外,您不需要System.exit(0);
's,因为程序无论如何都会退出,并且使用System.exit(0);
通常不是好的做法。
推荐阅读
- excel - 使用 Powershell 从 Excel 工作表中获取复选框?
- reactjs - Material-UI 中添加的自托管字体不起作用?
- javascript - 如何使用 php 标签在 grid.js 中编写获取文本
- sql-server - 如何在 SQL 和 LINQ 中获取每个员工的第二个最高工资值?
- openxml - 我在 C# 中使用 OpenXML 创建 xlsx 文件,但日期为 1900 年 1 月
- c++ - 如何优雅地实现具有可变输出的单一方法?
- collection-select - 为什么我不能使用这个代码 f.collection_select
- returnn - 如何在更多数据上训练 LM?
- c# - 通过 C# 插入 SQL 表,代码运行良好,但我无法在数据库中找到新条目
- python - 在 1 行中进行双重 for 循环以创建新的元组列表