0

这是我需要做的:询问用户他参加了多少次测验。然后,提示用户输入那么多等级。当用户输入完成绩后,告诉他他所有测验的平均成绩。你不知道用户会输入什么数字

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

这就是我所得到的......我不确定如何根据用户参加的测验次数来多次提示用户......

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

} while (count != 0);
4

2 回答 2

2

for 循环可能会有所帮助:

for (int i = 0; i < numQuiz; i++) {
    // ask user to "Enter quiz grade XX", XX being (i+1)
} 
于 2013-09-27T15:34:44.977 回答
1

为什么不简单地询问用户“你参加了多少测验?” . 在收到用户的这个输入后,只需JPanel根据用户指定的输入创建一个新的,然后将这个新的呈现JPanel在 aJOptionPane中,一步完成,而不是多次询问并用多个JOptionPanes 烦扰用户。

一个小例子:

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并简单地对其进行迭代,以找到平均值(尽管这只是我的意见,因为我对您的项目真的不太了解)

于 2013-09-27T17:09:52.387 回答