如何正确退出线程 "main" java.lang.NumberFormatException 中的 JOptionPanel 异常:null
How to properly exit out of JOptionPanel Exception in thread "main" java.lang.NumberFormatException: null
我正在尝试创建一个 GUI,用户必须在其中输入一个整数。如果用户输入非整数,它会提示 GUI。我也想让它退出。当我让它退出时,我得到这个错误:
Exception in thread "main" 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);
}
}
问题是您在 try/catch 块中留下了可能导致异常 (int analysisLevel = Integer.parseInt(input);
) 的一行。你需要把它移到里面:
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);
,因为程序无论如何都会退出,使用 System.exit(0);
通常不是好的做法。
您正在打印 catch 块中的错误 -- NumberFormatException 是您尝试将非整数解析为整数时抛出的异常。唯一的问题是抛出错误的行不在 try 块中。
试试这个。这利用了例外:
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
try {
int analysisLevel = Integer.parseInt(input);
//Code you want to run when analysisLevel is a number
if (analysisLevel >= 0) {
System.out.println(analysisLevel);
}
} catch (NumberFormatException nfe) {
//Code you want to run when analysisLevel isn't a number
input = JOptionPane.showInputDialog("Enter Desired Analysis level");
}
System.exit(0);
}
我正在尝试创建一个 GUI,用户必须在其中输入一个整数。如果用户输入非整数,它会提示 GUI。我也想让它退出。当我让它退出时,我得到这个错误:
Exception in thread "main" 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);
}
}
问题是您在 try/catch 块中留下了可能导致异常 (int analysisLevel = Integer.parseInt(input);
) 的一行。你需要把它移到里面:
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);
,因为程序无论如何都会退出,使用 System.exit(0);
通常不是好的做法。
您正在打印 catch 块中的错误 -- NumberFormatException 是您尝试将非整数解析为整数时抛出的异常。唯一的问题是抛出错误的行不在 try 块中。
试试这个。这利用了例外:
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
try {
int analysisLevel = Integer.parseInt(input);
//Code you want to run when analysisLevel is a number
if (analysisLevel >= 0) {
System.out.println(analysisLevel);
}
} catch (NumberFormatException nfe) {
//Code you want to run when analysisLevel isn't a number
input = JOptionPane.showInputDialog("Enter Desired Analysis level");
}
System.exit(0);
}