JOptionPane закрывается после ввода, но должен открыть второе диалоговое окно ввода - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать код, который просит пользователя ввести 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.");
                        }
                    }
                }
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Сканер System.in по умолчанию является средством чтения ввода из командной строки.Если вы устанавливаете свои значения равными входу консоли, вы абсолютно ничего не делаете с входами 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+".");
0 голосов
/ 12 сентября 2018

JOptionPane.showInputDialog возвращает строку, введенную пользователем.Преобразуйте возвращаемое значение в целое число, используя метод Integer.parseInt.Вы не должны использовать keyboard.nextInt(), который ожидает ввода пользователя с консоли.

...