2012-10-10 8 views
5

입력 대화 상자를 사용하여 100 개에서 3 개의 테스트 표시를 읽는 프로그램을 작성하십시오. 프로그램은 가장 낮은 표시를 삭제하고 메시지 대화 상자에서 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 회 그리고 나는 그것을 오늘 사용했다. 그리고 너무 현지화되어 폐쇄되었습니다. 롤, 좋아. –

+0

FYI -이 질문은 'Java swing input alert'의 조합을 검색 할 때 # 2 결과입니다 –

답변

2

합니다. 가정하자 결과

int testint1 = Integer.parse(test1); 

마찬가지로 다른 해석되는 다음 정수로된다. 이제 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

하여이 두 값을 & 분할을 추가하여 다음 계산 될 수있다, 왜 한 번에 모든 작업을 수행하지 사용자의 인내심을 테스트하는 대신 단일 대화 상자에서 시간을 절약 할 수 있습니까?

모든 필드를 JPanel에 입력하고 JPanelJOptionPane에 추가하면 모든 정보를 하나의 대화 상자에 추가 할 수 있습니다. 코드 아래 좀 더 명확히 할 수

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