2012-10-10 28 views
5

Her biri 100 üzerinden üç test işaretini okumak için giriş iletişim kutularını kullanan bir program yazın. Program en düşük işaretini atar ve ileti iletişim kutusundaki iki yüksek işaretin ortalamasını gösterir.JOptionPane - giriş iletişim kutusu programı

Bu ben var ne kadar uzakta ve ben nerede buradan yapacağımı bilmiyorum, herhangi bir yardım mutluluk duyacağız: Sonuçları ayrıştırmak zorunda Bundan sonra

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

See [bu ipuçları] (http://home.earthlink.net/~patricia_shanahan/beginner.html) başlangıç ​​için - değilse bir çözüme, o zaman en En azından * belirli bir soruyu sorma aşamasına gelmek için. –

+0

Bu soru/cevap için 100.000 görüntüleme. Ve bugün kullandım. Ve henüz çok lokalize olduğu için kapalı. Haha tamam. –

+0

FYI - 'java swing giriş uyarısı' –

cevap

2

. varsayalım sonuçlar

int testint1 = Integer.parse(test1); 

Benzer diğerleri ayrıştırılması gerekir, sonra tamsayılar içindedir. Şimdi, sonuçlar ifadesinden sonra iki üst işaret için kontrol edilmelidir.

Sen döngü dizinin bireysel parçalara JOptionPane.showInputDialog yanıtı ayrıştırmak olabilir:

+0

kombinasyonları için arama yaparken bu sorular # 2 sonucudur eğer 3 rakam olduğunda if ifadesini nasıl yazarım, çünkü yazamazsınız (test3 user1733283

+0

Yapabilirseniz, (test3 greatmajestics

+0

&& bu soruyu nasıl yapabilirim? – 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

bir çözüm aslında yerine ayrı test dizelerden oluşan bir tamsayı dizisi kullanmaktır. 2 en yüksek değeri seçmenize izin vermek için bunları sıralamak için

Arrays.sort kullanılabilir. şeyleri girmek için üç farklı iletişim kutuları kullanıcıyı rahatsız etmek niye

ortalama kolayca 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

bu 2 değer & bölünmesini ekleyerek daha sonra hesaplanabilir, neden tek seferde tüm bunu KULLANICI'nın sabrını test etmek yerine tek bir İletişim Kutusu'nda ve zamandan tasarruf edin.

ürününüzün tüm alanlarını ekleyerek ve ardından bu JPanel ürününü JOptionPane ürününe ekleyerek, her şeyi tek bir İletişim Kutusu içine ekleyebilirsiniz. Kodun altında biraz daha netleştirmek için:

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(); 
      } 
     }); 
    } 
}