Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而不是将JOptionPane输入存储为变量并传递给方法。你们能把变量直接输入到方法中吗?_Java_Joptionpane - Fatal编程技术网

Java 而不是将JOptionPane输入存储为变量并传递给方法。你们能把变量直接输入到方法中吗?

Java 而不是将JOptionPane输入存储为变量并传递给方法。你们能把变量直接输入到方法中吗?,java,joptionpane,Java,Joptionpane,我试图提示用户使用JOptionPane从对话框中输入两个数字,然后调用一个方法返回它们的值 我试图使用integer.parseInt()将JOptionPane返回的字符串值转换为整数,但无法使其工作 有什么提示我哪里出了问题吗 谢谢 /** * */ package methodsWeekThree; import javax.swing.JOptionPane; /** * @author kylemoffett * */ public class ReturnM

我试图提示用户使用JOptionPane从对话框中输入两个数字,然后调用一个方法返回它们的值

我试图使用integer.parseInt()将JOptionPane返回的字符串值转换为整数,但无法使其工作

有什么提示我哪里出了问题吗

谢谢

    /**
 * 
 */
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
尝试:

说明:

  • 最好先存储
    JOptionPane
    值,然后再将其传递给
    additionCircuit
    方法,以避免括号问题

  • 括号的嵌套是错误的

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

    这里有一种替代方法,它只显示一次
    JOptionPane
    ,而不是两次

    导入java.awt.gridbag约束;
    导入java.awt.GridBagLayout;
    导入java.awt.event.WindowAdapter;
    导入java.awt.event.WindowEvent;
    导入javax.swing.JDialog;
    导入javax.swing.JLabel;
    导入javax.swing.JOptionPane;
    导入javax.swing.JPanel;
    导入javax.swing.JTextField;
    导入javax.swing.WindowConstants;
    公共类ReturnMethodExcersione{
    公共静态void main(字符串[]args){
    JPanel panel=newjpanel(newgridbagloayout());
    GridBagConstraints gbc=新的GridBagConstraints();
    gbc.gridx=0;
    gbc.gridy=0;
    JLabel num1标签=新JLabel(“num1”);
    面板。添加(num1Label,gbc);
    gbc.gridx=1;
    JTextField num1TextField=新的JTextField(6);
    panel.add(num1TextField,gbc);
    gbc.gridx=0;
    gbc.gridy=1;
    JLabel num2Label=新的JLabel(“num2”);
    面板。添加(num2Label,gbc);
    gbc.gridx=1;
    JTextField num2TextField=新的JTextField(6);
    panel.add(num2TextField,gbc);
    JOptionPane optionPane=新JOptionPane(面板);
    JDialog dlg=optionPane.createDialog(“提示符”);
    dlg.addWindowListener(新的WindowAdapter(){
    @凌驾
    公共无效窗口已停用(WindowEvent e){
    int num1=Integer.parseInt(numtextfield.getText());
    int num2=Integer.parseInt(num2TextField.getText());
    系统输出println(加法电路(num1,num2));
    ((JDialog)e.getSource()).dispose();
    }
    @凌驾
    公共作废窗口关闭(WindowEvent WindowEvent){
    int num1=Integer.parseInt(numtextfield.getText());
    int num2=Integer.parseInt(num2TextField.getText());
    系统输出println(加法电路(num1,num2));
    }
    });
    dlg.setDefaultCloseOperation(WindowConstants.DISPOSE\u ON\u CLOSE);
    dlg.设置尺寸(200200);
    dlg.setVisible(真);
    }//端干管
    /**
    *此方法将两个数字相加并返回值
    * 
    *@param num1-要添加的第一个数字
    *@param num2-要添加的第二个数字
    *@return-添加的总数
    */
    公共静态int加法电路(int num1,int num2){
    整数合计;
    总计=num1+num2;
    返回总数;
    }//端加电路
    }
    
    存储JOptionPane值,然后将这些值传递给从未请求用户输入的additionCircuit方法。使用scanner类。@NitinBisht我想我必须这么做,只是因为我太懒了,希望我能直接通过它们。谢谢@Smartsav10作业窗格显示一个对话框,提示用户输入作业input@KyleMoffett没问题,我已经为同样的问题添加了一个答案,为什么会有不同呢?你的代码会工作,而且比OP的可读性更好,但这个解释显然是错误的。如果你在将返回值作为参数传递到另一个函数之前将其存储到一个变量中,或者如果你只是嵌套函数调用,这没有任何区别。至少,只要你不被嵌套的函数调用弄糊涂,不把括号弄乱,OP就是这样。请看我的答案,它在一行代码中就有这样做的工作代码(尽管很糟糕,也不可读)。@Taschi你是对的,在传递给方法之前,值是否被存储并不重要。第二,在一行中书写大多数情况下都会导致错误,括号中的数字会像OP一样增加。因此,我使用变量来避免括号中的错误。无论如何,我感谢您发现括号错误:)
    System.out.println(additionCircuit(Integer.parseInt(JOptionPane.showInputDialog("Input num1:")),
    Integer.parseInt(JOptionPane.showInputDialog("Input num2:"))));