这就是我需要做的事情:询问用户他参加了多少次测验。然后,提示用户获得这么多等级。当用户输入成绩时,告诉他所有测验的平均成绩。您不知道用户将输入的号码
例如,如果用户说他参加了3次测验,则提示应该说:“输入测验1级:”,然后“输入测验2级:”,然后“输入测验3级:”
这是我到目前为止......我不知道如何多次提示用户,具体取决于用户进行了多少次测验......
int numQuiz;
count = 1;
numQuiz = Integer.parseInt(JOptionPane.showInputDialog("How many quizzes did you take?"));
do
{
} while (count != 0);
答案 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
中并简单地迭代它,以找到平均值(尽管它是只是我的意见,因为我真的不太了解你的项目)