2012-10-10 5 views
5

入力ダイアログボックスを使用して3つのテストマークを読み取るプログラムを作成します。それぞれのテストマークは100個になります。プログラムは最低のマークを破棄し、メッセージダイアログボックスで上位2個のマークの平均を表示します。私が得たと私はどこここから行うに知らないどこまでJOptionPane - 入力ダイアログボックスプログラム

これは、任意の助けいただければ幸いですされています

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: "); 

    } 

} 
+0

を参照してください[これらのヒント](http://home.earthlink.net/~patricia_shanahan/beginner.html)あなたが始めるために - ない、その後の溶液にあれば*具体的な*質問をする段階に向かうためには、少なくとも。 –

+0

この質問/回答は100,000回表示されます。そして私は今日それを使いました。しかし、それはあまりにもローカライズされているため閉鎖されています。 Lol、ok。 –

+0

FYI - この質問は、 'Java swing input alert'の組み合わせを検索すると#2の結果になる –

答えて

2

あなたが結果を解析する必要がその後。 と仮定結果は、他のものは解析されるべきである。同様

int testint1 = Integer.parse(test1); 

次に、整数です。 今度は、結果として、より高い2つのマークがあるかどうかを確認する必要があります。ifステートメント その後、平均を取ります。

あなたはループ配列の個々の要素にJOptionPane.showInputDialogからの応答を解析することができ:

+0

if(test3 user1733283

+0

if(test3 greatmajestics

+0

if i &&を使用したくないのですが、どうすればこの質問をすることができますか? – user1733283

9
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)); 

    } 

} 
3

一つの解決策は、実際の代わりに別testストリングの整数配列を使用することです。

Arrays.sortを使用して2つの最高値を選ぶことができます。

平均は簡単に一度にすべてこれをしない理由2.

int[] testScore = new int[3]; 

for (int i = 0; i < testScore.length; i++) { 
    testScore[i] = Integer.parseInt(JOptionPane.showInputDialog("Please input mark for test " + i + ": ")); 
} 

Arrays.sort(testScore); 
System.out.println("Average: " + (testScore[1] + testScore[2])/2.0); 
1

なぜ物事を入力するために、3つの異なるダイアログボックスでユーザーを困らせるために、することにより、これらの2つの値&分割を追加することによって計算することができますユーザーの忍耐力をテストする代わりに、単一のダイアログで時間を節約できますか?

すべてのフィールドをJPanelに入力してから、JPanelJOptionPaneに追加すると、1つのダイアログにすべてを追加できます。コードの下にはもう少し明確にすることができます

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(); 
      } 
     }); 
    } 
} 
関連する問題