2012-10-10 53 views
5

Viết chương trình sử dụng hộp thoại đầu vào để đọc ba dấu kiểm tra, mỗi trong số 100. Chương trình loại bỏ điểm thấp nhất của bạn và hiển thị trung bình của hai dấu cao hơn trong hộp thoại tin nhắn.JOptionPane - chương trình hộp thoại đầu vào

Đây là cách xa tôi đã nhận và tôi không biết được nơi để làm từ đây, bất kỳ trợ giúp sẽ được đánh giá cao:

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

Xem [những mẹo này] (http://home.earthlink.net/~patricia_shanahan/beginner.html) để bạn bắt đầu - nếu không có giải pháp, thì tại ít nhất là đến giai đoạn hỏi câu hỏi * cụ thể *. –

+0

100.000 lượt xem cho câu hỏi/câu trả lời này. Và hôm nay tôi đã sử dụng nó. Tuy nhiên, nó đóng cửa để được địa phương hóa quá. Haha được thôi. –

+0

FYI - Câu hỏi này là kết quả # 2 khi tìm kiếm kết hợp 'cảnh báo đầu vào java swing' –

Trả lời

2

Sau đó bạn phải phân tích các kết quả. kết quả Giả sử là trong số nguyên, sau đó

int testint1 = Integer.parse(test1); 

Tương tự như vậy những người khác nên được phân tích. Bây giờ kết quả sẽ được kiểm tra để có hai dấu cao hơn trong chúng, bằng cách sử dụng nếu tuyên bố Sau đó đưa ra mức trung bình.

+0

làm cách nào tôi viết câu lệnh if khi có 3 số vì bạn không thể viết nếu (test3 user1733283

+0

Bạn có thể, nếu (test3 greatmajestics

+0

if i không muốn sử dụng && làm cách nào khác tôi có thể thực hiện câu hỏi này? – 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

Một giải pháp là thực sự sử dụng một mảng số nguyên thay vì test chuỗi riêng biệt:

Bạn loop có thể phân tích các phản hồi từ JOptionPane.showInputDialog vào các yếu tố cá nhân của mảng.

Arrays.sort có thể được sử dụng để sắp xếp chúng để cho phép bạn chọn ra 2 giá trị cao nhất.

trung bình có thể dễ dàng tính toán sau đó bằng cách thêm 2 giá trị này & người chia làm 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

Tại sao làm phiền người dùng với ba Dialog Boxes khác nhau để nhập điều, tại sao không làm tất cả điều này chỉ trong một bước trong một Hộp thoại duy nhất và tiết kiệm thời gian, thay vì kiểm tra sự kiên nhẫn của NGƯỜI DÙNG?

Bạn có thể thêm mọi thứ vào một Hộp thoại bằng cách đặt tất cả các trường trên JPanel và sau đó thêm JPanel này vào số JOptionPane. Mã bên dưới có thể làm rõ thêm một chút:

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(); 
      } 
     }); 
    } 
} 
Các vấn đề liên quan