JOptionPane 在输入后关闭但应该打开第二个输入对话框
JOptionPane closes after input but should open second input dialog box
我正在尝试创建一个代码,要求用户输入 3 个单独的测试分数。
我正在使用 JOptionPane 进行对话和输入。
在询问我的第一个值后,它应该打开另一个并询问我的第二个值,依此类推。
它没有这样做而是关闭了并且没有为我提供第二个对话框。
这是我的代码。
import java.util.Scanner;
import javax.swing.JOptionPane;
public class GradeTest
{
public static void main(String[] args)
{
int Value1;
int Value2;
int Value3;
int average;
Scanner keyboard = new Scanner(System.in);
JOptionPane.showInputDialog("What is your first value?");
Value1 = keyboard.nextInt();
JOptionPane.showInputDialog("What is your second value?");
Value2 = keyboard.nextInt();
JOptionPane.showInputDialog("What is your second value?");
Value3 = keyboard.nextInt();
average = Value1 + Value2 + Value3;
average = average / 3;
JOptionPane.showMessageDialog(null, "The average grade is "
+ average + "%.");
if(average < 60)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is an F.");
}
else
{
if(average < 70)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a D.");
}
else
{
if(average <80)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a C.");
}
else
{
if(average <90)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a B.");
}
else
{
if(average <100)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is an A.");
}
}
}
}
}
}
}
JOptionPane.showInputDialog
returns 用户输入的字符串。使用 Integer.parseInt
方法将 return 值转换为整数。您不应该使用正在等待来自控制台的用户输入的 keyboard.nextInt()
。
默认System.in扫描器是命令行输入reader。如果您将您的值设置为等于控制台输入,那么您对 JOptionPane 输入绝对没有任何作用。通常,您不应将控制台程序与 GUI 混合使用。通过使用 JOptionPane 结果,您想要做的可能更像这样。
...
int Value1, Value2, Value3, average;
Value1 = Integer.parseInt(JOptionPane.showInputDialog("What is your first value?"));
Value2 = Integer.parseInt(JOptionPane.showInputDialog("What is your second value?"));
Value3 = Integer.parseInt(JOptionPane.showInputDialog("What is your third value?"));
average = (Value1 + Value2 + Value3) / 3;
JOptionPane.showMessageDialog(null, "The average grade is " + average + "%.");
...
虽然这不是您的问题,但您的 if else 子句非常长,您真的应该将它们缩短到这个长度。
String avgGrade = "";
if (average < 60)
avgGrade = "F";
else if (average < 70)
avgGrade = "D";
else if (average < 80)
avgGrade = "C";
else if (average < 90)
avgGrade = "B";
else
avgGrade = "A";
JOptionPane.showMessageDialog(null, "The grade for "+ average + "% is "+avgGrade+".");
我正在尝试创建一个代码,要求用户输入 3 个单独的测试分数。 我正在使用 JOptionPane 进行对话和输入。 在询问我的第一个值后,它应该打开另一个并询问我的第二个值,依此类推。 它没有这样做而是关闭了并且没有为我提供第二个对话框。
这是我的代码。
import java.util.Scanner;
import javax.swing.JOptionPane;
public class GradeTest
{
public static void main(String[] args)
{
int Value1;
int Value2;
int Value3;
int average;
Scanner keyboard = new Scanner(System.in);
JOptionPane.showInputDialog("What is your first value?");
Value1 = keyboard.nextInt();
JOptionPane.showInputDialog("What is your second value?");
Value2 = keyboard.nextInt();
JOptionPane.showInputDialog("What is your second value?");
Value3 = keyboard.nextInt();
average = Value1 + Value2 + Value3;
average = average / 3;
JOptionPane.showMessageDialog(null, "The average grade is "
+ average + "%.");
if(average < 60)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is an F.");
}
else
{
if(average < 70)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a D.");
}
else
{
if(average <80)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a C.");
}
else
{
if(average <90)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is a B.");
}
else
{
if(average <100)
{
JOptionPane.showMessageDialog(null, "The grade for "
+ average + "% is an A.");
}
}
}
}
}
}
}
JOptionPane.showInputDialog
returns 用户输入的字符串。使用 Integer.parseInt
方法将 return 值转换为整数。您不应该使用正在等待来自控制台的用户输入的 keyboard.nextInt()
。
默认System.in扫描器是命令行输入reader。如果您将您的值设置为等于控制台输入,那么您对 JOptionPane 输入绝对没有任何作用。通常,您不应将控制台程序与 GUI 混合使用。通过使用 JOptionPane 结果,您想要做的可能更像这样。
...
int Value1, Value2, Value3, average;
Value1 = Integer.parseInt(JOptionPane.showInputDialog("What is your first value?"));
Value2 = Integer.parseInt(JOptionPane.showInputDialog("What is your second value?"));
Value3 = Integer.parseInt(JOptionPane.showInputDialog("What is your third value?"));
average = (Value1 + Value2 + Value3) / 3;
JOptionPane.showMessageDialog(null, "The average grade is " + average + "%.");
...
虽然这不是您的问题,但您的 if else 子句非常长,您真的应该将它们缩短到这个长度。
String avgGrade = "";
if (average < 60)
avgGrade = "F";
else if (average < 70)
avgGrade = "D";
else if (average < 80)
avgGrade = "C";
else if (average < 90)
avgGrade = "B";
else
avgGrade = "A";
JOptionPane.showMessageDialog(null, "The grade for "+ average + "% is "+avgGrade+".");