【问题标题】:JOptionPane Cannot Find SymbolJOptionPane 找不到符号
【发布时间】:2014-10-08 15:45:46
【问题描述】:

我正在尝试使用 JOptionPane 创建一个简单的计算器。我遇到了编译错误。

import javax.swing.JOptionPane; 

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


     double n1 = Double.parseDouble(JOptionPane.showInputDialog(" Enter first number: "));
     double n2 = Double.parseDouble(JOptionPane.showInputDialog(" Enter second number: "));
     String x = JOptionPane.showInputDialog("Enter operator: ");
     double result;

     if (x == "+"){
         result = (n1 + n2);
           JOptionPane.showMessageDialog(n1, "+", n2,"=", result); 
           }

        else if (x == "-"){
         result = (n1 - n2); 
           JOptionPane.showMessageDialog(n1,"-", n2,"=", result); 
           }


        else if (x == "/"){
            result = (n1 / n2);
            JOptionPane.showMessageDialog(n1,"/", n2,"=", result); }
        else if (n2 == 0){
                JOptionPane.showMessageDialog(null, "Cannot divide by 0"); }


        else if (x == "*"){
            result = (n1 * n2); 
            JOptionPane.showMessageDialog(n1,"*", n2,"=", result); }


        else if (x == "%"){
               result = (n1 % n2);
               JOptionPane.showMessageDialog(n1,"%", n2,"=",(n1%n2)); }
  }
}

我的代码出现了这些编译错误:

发现 5 个错误: 文件:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java [行:14] 错误:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java:14:找不到符号 符号:方法 showMessageDialog(double,java.lang.String,double,java.lang.String,double) 位置:类 javax.swing.JOptionPane 文件:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java [行:19] 错误:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java:19:找不到符号 符号:方法 showMessageDialog(double,java.lang.String,double,java.lang.String,double) 位置:类 javax.swing.JOptionPane 文件:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java [行:25] 错误:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java:25:找不到符号 符号:方法 showMessageDialog(double,java.lang.String,double,java.lang.String,double) 位置:类 javax.swing.JOptionPane 文件:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java [行:32] 错误:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java:32:找不到符号 符号:方法 showMessageDialog(double,java.lang.String,double,java.lang.String,double) 位置:类 javax.swing.JOptionPane 文件:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java [行:37] 错误:/Users/gcaruso/Documents/CISS 110/Module 3/Module 4/Calculator.java:37:找不到符号 符号:方法 showMessageDialog(double,java.lang.String,double,java.lang.String,double) 位置:类 javax.swing.JOptionPane

【问题讨论】:

    标签: java compiler-errors joptionpane cannot-find-symbol


    【解决方案1】:

    我完成了它,所以整个事情都有效:

    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    
    public class Calculator extends JPanel {
        public static void main(String args[]) {
    
            JFrame f = new JFrame();
    
            double n1 = Double.parseDouble(JOptionPane
                    .showInputDialog(" Enter first number: "));
            double n2 = Double.parseDouble(JOptionPane
                    .showInputDialog(" Enter second number: "));
            String x = JOptionPane.showInputDialog("Enter operator: ");
            double result;
    
            if (x.equals("+")) {
                result = (n1 + n2);
                JOptionPane.showMessageDialog(f, n1 + "+" + n2 + "=" + result);
                System.out.println(x);
            }
    
            else if (x.equals("-")) {
                result = (n1 - n2);
                JOptionPane.showMessageDialog(f, n1 + "-" + n2 + "=" + result);
                System.out.println(x);
            }
    
            else if (x.equals("/")) {
                if (n2 == 0) {
                    JOptionPane.showMessageDialog(null, "Cannot divide by 0");
                }else{
                result = (n1 / n2);
                JOptionPane.showMessageDialog(f, n1 + "/" + n2 + "=" + result);
                System.out.println(x);
                }
            }
    
            else if (x.equals("*")) {
                result = (n1 * n2);
                JOptionPane.showMessageDialog(f, n1 + "*" + n2 + "=" + result);
            }
    
            else if (x.equals("%")) {
                result = (n1 % n2);
                JOptionPane.showMessageDialog(f, n1 + "%" + n2 + "=" + (n1 % n2));
            }
        }
    }
    

    "==" 与 ".equals" 不同 -

    .equals 比较两个对象的值

    == 比较它们是否是java中的同一个对象~

    【讨论】:

    • 请注意,您无需提供JFrame f。您可以使用null,对话框将正常工作。第一个论点是针对父所有者 IIRC。如果某物没有父母,就没有必要给它一个。
    • 可以理解,@MatthewRowlands 仅供参考,它隐藏在 JavaDoc 中。
    【解决方案2】:

    所以我认为你的方法 showMessageDialog 做错了:

    JOptionPane.showMessageDialog(n1, "+", n2,"=", result); 
    

    试试这个:

    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    
    public class Calculator extends JPanel {
        public static void main(String args[]) {
    
            JFrame f = new JFrame();
    
            double n1 = Double.parseDouble(JOptionPane
                    .showInputDialog(" Enter first number: "));
            double n2 = Double.parseDouble(JOptionPane
                    .showInputDialog(" Enter second number: "));
            String x = JOptionPane.showInputDialog("Enter operator: ");
            double result;
    
            if (x == "+") {
                result = (n1 + n2);
                JOptionPane.showMessageDialog(f, n1 + "+" + n2 + "=" + result);
            }
    
            else if (x == "-") {
                result = (n1 - n2);
                JOptionPane.showMessageDialog(f, n1 + "-" + n2 + "=" + result);
            }
    
            else if (x == "/") {
                result = (n1 / n2);
                JOptionPane.showMessageDialog(f, n1 + "/" + n2 + "=" + result);
            } else if (n2 == 0) {
                JOptionPane.showMessageDialog(null, "Cannot divide by 0");
            }
    
            else if (x == "*") {
                result = (n1 * n2);
                JOptionPane.showMessageDialog(f, n1 + "*" + n2 + "=" + result);
            }
    
            else if (x == "%") {
                result = (n1 % n2);
                JOptionPane.showMessageDialog(f, n1 + "%" + n2 + "=" + (n1 % n2));
            }
        }
    }
    

    【讨论】:

    • 谢谢!现在它正在编译,但它仍然没有显示输出。
    • 附带说明,从 java 7 开始,您可以在字符串上使用 switch/case。
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2013-09-12
    • 2013-06-06
    • 2017-10-01
    • 2015-05-10
    • 2014-01-05
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多