-1
votes

Plutôt que de stocker une entrée Joptionpane en tant que variable et passant à une méthode. Pouvez-vous saisir la variable directement dans la méthode?

im essayant d'inviter l'utilisateur à saisir deux numéros à partir d'une boîte de dialogue à l'aide de JOPTIONPANE, puis appelez une méthode pour renvoyer leur valeur.

J'essaie de convertir la valeur de chaîne JOPTIONPANE RETOURNIT EN INTEGER.PARSINTING () Mais je ne peux pas le faire fonctionner. P>

Toute astuce où je passe mal? p>

Merci! P>

    /**
 * 
 */
package methodsWeekThree;

import javax.swing.JOptionPane;

/**
 * @author kylemoffett
 *
 */
public class ReturnMethodExcersiseOne {

    /**
     * @param args
     */
    public static void main(String[] args) {

        System.out.println("Please input num1 and hit enter: ");

        System.out.println("Please input num2 and hit enter: ");

        System.out.println(additionCircuit(Integer.parseInt(JOptionPane.showInputDialog("Input num1:"))),
                Integer.parseInt(JOptionPane.showInputDialog("Input num2:")));

    }// end main

    /**
     * This method adds two numbers and returns the value
     * 
     * @param num1 - first number to add
     * @param num2 - second number to add
     * @return - total of the addition
     */
    public static int additionCircuit(int num1, int num2) {

        int total;

        total = num1 + num2;

        return total;

    }// end additionCircuit

}// end class


5 commentaires

Stockez les valeurs de JOPTIONPANE, puis transmettez ces valeurs à la méthode de la suiteCRUCATUIT


Vous n'avez jamais demandé l'entrée utilisateur. Utilisez la classe Scanner.


@Nitinhtht je pensais que je devais faire ça, était juste en train d'être paresseux et espérant pouvoir les passer tout droit. Merci!


@ SmartSav10 Le JOPTIONPANE affiche une boîte de dialogue pour inviter l'utilisateur à l'entrée.


@Kylemoffett Pas de problème, j'ai ajouté une réponse pour la même façon de vérifier


3 Réponses :


2
votes

Essayez: xxx

Explication:

  1. Il est bon de stocker JOPTIONPANE avant de le transmettre à DétailCRUCUIT Pour éviter les supports de supports.

4 commentaires

Pourquoi cela ferait-il une différence?


Votre code fonctionnera et est plus lisible que OP, mais cette explication est flagramment fausse.


Il ne fait aucune différence si vous stockez une valeur de retour dans une variable avant de la transmettre à une autre fonction sous forme de paramètre ou si vous n'engillez pas les appels de fonction. Au moins, tant que vous ne soyez pas confus par les appels de fonction imbriqués et vous gâchez vos crochets, ce qui est ce qui est arrivé à OP. Consultez ma réponse, qui travaille (bien que méchant et illisible) pour ce faire en une seule ligne.


@Taschi Vous avez raison, cela ne comportera pas si des valeurs sont stockées ou non avant de passer à la méthode. Deuxièmement, l'écriture dans une seule ligne conduira à une erreur la plupart du temps avec une augmentation des crochets comme avec OP. Par conséquent, j'ai utilisé des variables pour éviter les erreurs de support. Quoi qu'il en soit, j'apprécie que vous ayez trouvé l'erreur de support :)



1
votes

L'imbrication de vos supports est fausse.

System.out.println(additionCircuit(Integer.parseInt(JOptionPane.showInputDialog("Input num1:")),
Integer.parseInt(JOptionPane.showInputDialog("Input num2:"))));


0 commentaires

1
votes

Voici une méthode alternative qui affiche un JOPTIONPANE code> une fois seulement, plutôt que deux fois.

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class ReturnMethodExcersiseOne {
    public static void main(String[] args) {

        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        JLabel num1Label = new JLabel("num1");
        panel.add(num1Label, gbc);
        gbc.gridx = 1;
        JTextField num1TextField = new JTextField(6);
        panel.add(num1TextField, gbc);
        gbc.gridx = 0;
        gbc.gridy = 1;
        JLabel num2Label = new JLabel("num2");
        panel.add(num2Label, gbc);
        gbc.gridx = 1;
        JTextField num2TextField = new JTextField(6);
        panel.add(num2TextField, gbc);
        JOptionPane optionPane = new JOptionPane(panel);
        JDialog dlg = optionPane.createDialog("Prompt");
        dlg.addWindowListener(new WindowAdapter() {
            @Override
            public void windowDeactivated(WindowEvent e) {
                int num1 = Integer.parseInt(num1TextField.getText());
                int num2 = Integer.parseInt(num2TextField.getText());
                System.out.println(additionCircuit(num1, num2));
                ((JDialog) e.getSource()).dispose();
            }
            
            @Override
            public void windowClosing(WindowEvent windowEvent) {
                int num1 = Integer.parseInt(num1TextField.getText());
                int num2 = Integer.parseInt(num2TextField.getText());
                System.out.println(additionCircuit(num1, num2));
            }
        });
        dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        dlg.setSize(200, 200);
        dlg.setVisible(true);
    }// end main

    /**
     * This method adds two numbers and returns the value
     * 
     * @param num1 - first number to add
     * @param num2 - second number to add
     * @return - total of the addition
     */
    public static int additionCircuit(int num1, int num2) {
        int total;
        total = num1 + num2;
        return total;
    }// end additionCircuit
}


0 commentaires