2012-10-10 57 views
5

Escriba un programa que utiliza cuadros de diálogo de entrada para leer tres marcas de prueba, cada una de cada 100. El programa descarta la marca más baja y muestra el promedio de las dos marcas superiores en un cuadro de diálogo de mensaje.JOptionPane - cuadro de diálogo de entrada programa

Esto es lo lejos que tengo y no sé dónde hacer desde aquí, cualquier ayuda se agradece:

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

Ver [estos consejos] (http://home.earthlink.net/~patricia_shanahan/beginner.html) para empezar - si no a una solución, y luego a menos para llegar a la etapa de hacer una pregunta * específica *. –

+0

100,000 vistas para esta pregunta/respuesta. Y lo usé hoy. Y, sin embargo, está cerrado por ser demasiado localizado. Jajaja ok. –

+0

FYI - Esta pregunta es el resultado # 2 al buscar combinaciones de 'java swing input alert' –

Respuesta

2

Después de que usted tiene que analizar los resultados. resultados suponen están en números enteros, entonces

int testint1 = Integer.parse(test1); 

Del mismo modo que otros deberían ser analizada. Ahora los resultados deben verificarse para dos marcas más altas en ellos, usando la instrucción if Después de eso, saque la media.

+0

cómo escribiría la sentencia if cuando hay 3 números porque no se puede escribir if (test3 user1733283

+0

Puedes, if (test3 greatmajestics

+0

si i no quería usar el && ¿cómo más podría hacer esta pregunta? – 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

Una solución es utilizar realmente una matriz de enteros en lugar de test cadenas separadas:

Se podría bucle analizar la respuesta de JOptionPane.showInputDialog en los elementos individuales de la matriz.

Arrays.sort podría utilizarse para ordenarlos para que pueda seleccionar los 2 valores más altos.

El promedio se puede calcular fácilmente a continuación mediante la adición de estos 2 valores & dividiendo por 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

Por qué molestar al usuario con tres cuadros de diálogo para introducir diferentes cosas, por qué no hacer todo esto en una sola vez en un solo cuadro de diálogo y ahorrar tiempo, en lugar de probar la paciencia del USUARIO?

Puede agregar todo en un solo cuadro de diálogo, poniendo todos los campos en su JPanel y agregando este JPanel a su JOptionPane. A continuación código puede clarificar un poco más:

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