多个对话框提示取决于用户输入

时间:2013-09-27 15:30:20

标签: java swing

这就是我需要做的事情:询问用户他参加了多少次测验。然后,提示用户获得这么多等级。当用户输入成绩时,告诉他所有测验的平均成绩。您不知道用户将输入的号码

例如,如果用户说他参加了3次测验,则提示应该说:“输入测验1级:”,然后“输入测验2级:”,然后“输入测验3级:”

这是我到目前为止......我不知道如何多次提示用户,具体取决于用户进行了多少次测验......

int numQuiz;
count = 1;
numQuiz = Integer.parseInt(JOptionPane.showInputDialog("How many quizzes did you take?"));
do
{

} while (count != 0);

2 个答案:

答案 0 :(得分:2)

for循环可能会有所帮助:

for (int i = 0; i < numQuiz; i++) {
    // ask user to "Enter quiz grade XX", XX being (i+1)
} 

答案 1 :(得分:1)

为什么不简单地询问用户,“你参加了多少次测验?”。收到用户的此输入后,只需根据用户指定的输入创建新的JPanel,然后在JPanel内显示此新JOptionPane,即可在一个步骤中执行此操作多次询问并用多个JOptionPane s来烦扰用户。

一个小例子:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class OptionPaneTest {

    private int size;
    private JTextField[] gradeField;

    private void displayGUI() {
        size = Integer.parseInt(
            JOptionPane.showInputDialog(
                "Enter total grades to calculate : "));
        System.out.println(size);

        JOptionPane.showMessageDialog(null, getPanel(size));
    }

    private JPanel getPanel(final int size) {
        JPanel panel = new JPanel(
            new FlowLayout(FlowLayout.LEFT, 5, 5));
        JLabel label = new JLabel("Average : ", JLabel.CENTER);
        panel.add(label);
        gradeField = new JTextField[size];
        for (int i = 0; i < gradeField.length; i++) {
            gradeField[i] = new JTextField(3);          
            panel.add(gradeField[i]);
        }

        gradeField[size - 1].addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                int sum = 0;
                for (JTextField textField : gradeField) {
                    if (textField.getDocument().getLength() > 0) {
                        sum += Integer.parseInt(textField.getText());
                    }
                }
                System.out.println("Average : " + (sum / size));
            }
        });

        return panel;
    }

    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                new OptionPaneTest().displayGUI();
            }
        };
        EventQueue.invokeLater(runnable);
    }
}

希望您能根据自己的需要进行修改。它在控制台上提供输出。或者,您可以在同一JLabel上放置JPanel,以向用户显示平均值

但是,令我感到惊讶的是,该计划要求用户提供他/她的成绩。用户是否真诚地提供(或将记住过去收集的所有成绩)。如果您将用户获得的每个成绩放在List或其他Collection中并简单地迭代它,以找到平均值(尽管它是只是我的意见,因为我真的不太了解你的项目)