编写一个程序,使用输入对话框读取三个测试标记,每个测试标记100个.程序丢弃最低标记,并在消息对话框中显示两个较高标记的平均值.
这是我有多远,我不知道从这里做什么,任何帮助将不胜感激:
import javax.swing.JOptionPane;
public class Average {
public static void main (String [] args){
String test1, test2, test3, avg;
test1= JOptionPane.showInputDialog("Please input mark for test 1: ");
test2= JOptionPane.showInputDialog("Please input mark for test 2: ");
test3= JOptionPane.showInputDialog("Please input mark for test 3: ");
}
}
Run Code Online (Sandbox Code Playgroud)
Jag*_*ger 14
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class Average {
public static void main(String [] args) {
String test1= JOptionPane.showInputDialog("Please input mark for test 1: ");
String test2= JOptionPane.showInputDialog("Please input mark for test 2: ");
String test3= JOptionPane.showInputDialog("Please input mark for test 3: ");
int int1 = Integer.parseInt(test1);
int int2 = Integer.parseInt(test2);
int int3 = Integer.parseInt(test3);
SortedSet<Integer> set = new TreeSet<>();
set.add(int1);
set.add(int2);
set.add(int3);
Integer [] intArray = set.toArray(new Integer[3]);
JFrame frame = new JFrame();
JOptionPane.showInternalMessageDialog(frame.getContentPane(), String.format("Result %f", (intArray[1] + intArray[2]) / 2.0));
}
}
Run Code Online (Sandbox Code Playgroud)
为什么要用三个不同的对话框来烦扰用户输入内容,为什么不在一个对话框中一次性完成所有这些操作并节省时间,而不是测试用户的耐心?
您可以在单个对话框中添加所有内容,方法是将所有字段放在您的对话框中JPanel,然后将其添加JPanel到您的JOptionPane. 下面的代码可以更清楚地说明一点:
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class AverageExample
{
private double[] marks;
private JTextField[] marksField;
private JLabel resultLabel;
public AverageExample()
{
marks = new double[3];
marksField = new JTextField[3];
marksField[0] = new JTextField(10);
marksField[1] = new JTextField(10);
marksField[2] = new JTextField(10);
}
private void displayGUI()
{
int selection = JOptionPane.showConfirmDialog(
null, getPanel(), "Input Form : "
, JOptionPane.OK_CANCEL_OPTION
, JOptionPane.PLAIN_MESSAGE);
if (selection == JOptionPane.OK_OPTION)
{
for ( int i = 0; i < 3; i++)
{
marks[i] = Double.valueOf(marksField[i].getText());
}
Arrays.sort(marks);
double average = (marks[1] + marks[2]) / 2.0;
JOptionPane.showMessageDialog(null
, "Average is : " + Double.toString(average)
, "Average : "
, JOptionPane.PLAIN_MESSAGE);
}
else if (selection == JOptionPane.CANCEL_OPTION)
{
// Do something here.
}
}
private JPanel getPanel()
{
JPanel basePanel = new JPanel();
//basePanel.setLayout(new BorderLayout(5, 5));
basePanel.setOpaque(true);
basePanel.setBackground(Color.BLUE.darker());
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new GridLayout(3, 2, 5, 5));
centerPanel.setBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5));
centerPanel.setOpaque(true);
centerPanel.setBackground(Color.WHITE);
JLabel mLabel1 = new JLabel("Enter Marks 1 : ");
JLabel mLabel2 = new JLabel("Enter Marks 2 : ");
JLabel mLabel3 = new JLabel("Enter Marks 3 : ");
centerPanel.add(mLabel1);
centerPanel.add(marksField[0]);
centerPanel.add(mLabel2);
centerPanel.add(marksField[1]);
centerPanel.add(mLabel3);
centerPanel.add(marksField[2]);
basePanel.add(centerPanel);
return basePanel;
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new AverageExample().displayGUI();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
之后您必须解析结果。假设结果是整数,那么
int testint1 = Integer.parse(test1);
Run Code Online (Sandbox Code Playgroud)
同样,其他人也应该被解析。现在应该使用 if 语句检查结果中是否有两个更高的分数,然后取出平均值。
| 归档时间: |
|
| 查看次数: |
154236 次 |
| 最近记录: |