简体   繁体   English

为什么会出现错误?

[英]Why did I get an error?

I am trying to make a calculator in Java. 我正在尝试用Java做一个计算器。 After learning about ActionListeners, I tried to add an ActionListener to a button, but after I did this and tried compiling the file, I got an error. 了解了ActionListener之后,我尝试将ActionListener添加到按钮上,但是这样做并尝试编译文件后,出现了错误。 My code is as follows. 我的代码如下。

import javax.swing.*;//import the packages needed for gui
import java.awt.*;
public class Window {
public static void main(String[] args) {
    JFrame Window = new JFrame("Window");//makes a JFrame
    Window.setSize(300,350);
    Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel Panel = new JPanel (new FlowLayout());//makes the panel, textfield and buttons
    JTextField TextField = new JTextField(20);
    JButton openbracket = new JButton("(");
    JButton closebracket = new JButton(")");
    JButton clearbutton = new JButton("C");
    JButton arcsin = new JButton("arcsin");
    JButton arccos = new JButton("arccos");
    JButton arctan = new JButton("arctan");
    JButton sin = new JButton("sin");
    JButton cos = new JButton("cos");
    JButton tan = new JButton("tan");
    JButton log = new JButton("log");
    JButton seven = new JButton("7");
    JButton eight = new JButton("8");
    JButton nine = new JButton("9");
    JButton four = new JButton("4");
    JButton five = new JButton("5");
    JButton six = new JButton("6");
    JButton one = new JButton("1");
    JButton two = new JButton("2");
    JButton three = new JButton("3");
    JButton zero = new JButton("0");
    JButton radixpoint = new JButton(".");
    JButton equal = new JButton("=");
    String values = null;
    public class Listener implements ActionListener {
    public void actionPerformed(ActionEvent e) {          
        values = values+"3";
        TextField.setText(values);
    }
    Panel.add(TextField);//adding all the things
    Window.add(Panel);
    Panel.add(openbracket);
    Panel.add(closebracket);
    Panel.add(clearbutton);
    Panel.add(arcsin);
    Panel.add(arccos);
    Panel.add(arctan);
    Panel.add(sin);
    Panel.add(cos);
    Panel.add(tan);
    Panel.add(log);
    Panel.add(nine);
    Panel.add(eight);
    Panel.add(seven);
    Panel.add(six);
    Panel.add(five);
    Panel.add(four);
    three.addActionListener(Listener);
    Panel.add(three);
    Panel.add(two);
    Panel.add(one);
    Panel.add(zero);
    Panel.add(radixpoint);
    Panel.add(equal);
    Window.setVisible(true);
}
}

The errors I got were: 我得到的错误是:

Window.java:33: illegal start of expression public class Listener implements ActionListener { ^ Window.java:38: expected Panel.add(TextField);//adding all the things ^ Window.java:38: expected Panel.add(TextField);//adding all the things ^ Window.java:39: expected Window.add(Panel); Window.java:33:表达式的非法开始公共类Listener实现ActionListener {^ Window.java:38:期望的Panel.add(TextField); //添加所有内容^ Window.java:38:期望的Panel.add(TextField ); ///添加所有东西^ Window.java:39:预期的Window.add(Panel); ^ Window.java:39: expected Window.add(Panel); ^ Window.java:39:预期的Window.add(Panel); ^ Window.java:40: expected Panel.add(openbracket); ^ Window.java:40:预期的Panel.add(openbracket); ^ Window.java:40: expected Panel.add(openbracket); ^ Window.java:40:预期的Panel.add(openbracket); ^ Window.java:41: expected Panel.add(closebracket); ^ Window.java:41:预期的Panel.add(closebracket); ^ Window.java:41: expected Panel.add(closebracket); ^ Window.java:41:预期的Panel.add(closebracket); ^ Window.java:42: expected Panel.add(clearbutton); ^ Window.java:42:预期的Panel.add(clearbutton); ^ Window.java:42: expected Panel.add(clearbutton); ^ Window.java:42:预期的Panel.add(clearbutton); ^ Window.java:43: expected Panel.add(arcsin); ^ Window.java:43:预期的Panel.add(arcsin); ^ Window.java:43: expected Panel.add(arcsin); ^ Window.java:43:预期的Panel.add(arcsin); ^ Window.java:44: expected Panel.add(arccos); ^ Window.java:44:预期的Panel.add(arccos); ^ Window.java:44: expected Panel.add(arccos); ^ Window.java:44:预期的Panel.add(arccos); ^ Window.java:45: expected Panel.add(arctan); ^ Window.java:45:预期的Panel.add(arctan); ^ Window.java:45: expected Panel.add(arctan); ^ Window.java:45:预期的Panel.add(arctan); ^ Window.java:46: expected Panel.add(sin); ^ Window.java:46:预期的Panel.add(sin); ^ Window.java:46: expected Panel.add(sin); ^ Window.java:46:预期的Panel.add(sin); ^ Window.java:47: expected Panel.add(cos); ^ Window.java:47:预期的Panel.add(cos); ^ Window.java:47: expected Panel.add(cos); ^ Window.java:47:预期的Panel.add(cos); ^ Window.java:48: expected Panel.add(tan); ^ Window.java:48:预期的Panel.add(tan); ^ Window.java:48: expected Panel.add(tan); ^ Window.java:48:预期的Panel.add(tan); ^ Window.java:49: expected Panel.add(log); ^ Window.java:49:预期的Panel.add(log); ^ Window.java:49: expected Panel.add(log); ^ Window.java:49:预期的Panel.add(log); ^ Window.java:50: expected Panel.add(nine); ^ Window.java:50:预期的Panel.add(nine); ^ Window.java:50: expected Panel.add(nine); ^ Window.java:50:预期的Panel.add(nine); ^ Window.java:51: expected Panel.add(eight); ^ Window.java:51:预期的Panel.add(八); ^ Window.java:51: expected Panel.add(eight); ^ Window.java:51:预期的Panel.add(八); ^ Window.java:52: expected Panel.add(seven); ^ Window.java:52:预期的Panel.add(七); ^ Window.java:52: expected Panel.add(seven); ^ Window.java:52:预期的Panel.add(七); ^ Window.java:53: expected Panel.add(six); ^ Window.java:53:预期的Panel.add(六个); ^ Window.java:53: expected Panel.add(six); ^ Window.java:53:预期的Panel.add(六个); ^ Window.java:54: expected Panel.add(five); ^ Window.java:54:预期的Panel.add(五); ^ Window.java:54: expected Panel.add(five); ^ Window.java:54:预期的Panel.add(五); ^ Window.java:55: expected Panel.add(four); ^ Window.java:55:预期的Panel.add(四个); ^ Window.java:55: expected Panel.add(four); ^ Window.java:55:预期的Panel.add(四个); ^ Window.java:56: expected three.addActionListener(Listener); ^ Window.java:56:预期为three.addActionListener(Listener); ^ Window.java:56: expected three.addActionListener(Listener); ^ Window.java:56:预期为three.addActionListener(Listener); ^ Window.java:57: expected Panel.add(three); ^ Window.java:57:预期的Panel.add(三); ^ Window.java:57: expected Panel.add(three); ^ Window.java:57:预期的Panel.add(三); ^ Window.java:58: expected Panel.add(two); ^ Window.java:58:预期的Panel.add(两个); ^ Window.java:58: expected Panel.add(two); ^ Window.java:58:预期的Panel.add(两个); ^ Window.java:59: expected Panel.add(one); ^ Window.java:59:预期的Panel.add(one); ^ Window.java:59: expected Panel.add(one); ^ Window.java:59:预期的Panel.add(one); ^ Window.java:60: expected Panel.add(zero); ^ Window.java:60:预期的Panel.add(零); ^ Window.java:60: expected Panel.add(zero); ^ Window.java:60:预期的Panel.add(零); ^ Window.java:61: expected Panel.add(radixpoint); ^ Window.java:61:预期的Panel.add(radixpoint); ^ Window.java:61: expected Panel.add(radixpoint); ^ Window.java:61:预期的Panel.add(radixpoint); ^ Window.java:62: expected Panel.add(equal); ^ Window.java:62:预期的Panel.add(等于); ^ Window.java:62: expected Panel.add(equal); ^ Window.java:62:预期的Panel.add(等于); ^ Window.java:63: expected Window.setVisible(true); ^ Window.java:63:预期的Window.setVisible(true); ^ Window.java:63: illegal start of type Window.setVisible(true); ^ Window.java:63:类型Window.setVisible(true)的非法启动; ^ Window.java:65: reached end of file while parsing } ^ Why did I get these errors? ^ Window.java:65:解析时到达文件末尾} ^为什么会出现这些错误? Please explain why. 请解释原因。

You can't declare more than one public class in a java file. 在一个Java文件中不能声明多个公共类。

If this were my program, I'd use a private inner class or an anonymous inner class, create an instance and add it to the buttons. 如果这是我的程序,则将使用私有内部类或匿名内部类,创建一个实例并将其添加到按钮中。

eg, 例如,

ActionListener numberButtonListener = new ActionListener() {
  public void actionPerformed(ActionEvent e) {
     //  TODO: put some code here
  }
};

// assuming a List<AbstractButton> of the number buttons
for (AbstractButton numberButton : numberButtonList) {
  numberButton.addActionListener(numberButtonListener);
} 

For your future questions here, you're going to want to improve your code indentation so that it is more easily read and understood. 对于您在此处将来遇到的问题,您将需要改进代码缩进,以使其更易于阅读和理解。


Also

As per a comment, this code: 根据评论,此代码:

public class Window {
public static void main(String[] args) {
    JFrame Window = new JFrame("Window");//makes a JFrame

Your class name and the variable name are the same. 您的类名和变量名相同。 This is not good and can confuse you and possibly the compiler. 这不是很好,并且可能使您以及编译器感到困惑。 Variable names should start with lower case letters as well. 变量名称也应以小写字母开头。 Also, you're going to want to get most of that code out of the static main method and into the object-oriented realm where it belongs. 另外,您将要从静态main方法中获取大部分代码,并进入其所属的面向对象领域。 You'll want to go through a decent intro to OOP and Java book such as "Thinking in Java". 您将要仔细阅读OOP和Java书籍,例如“ Thinking in Java”。 The order of things should be: 1) learn basic Java first, then 2) learn sub-specialized topics in Java such as Swing, or database, or ... 事情的顺序应该是:1)首先学习基本的Java,然后2)学习Java中的子专业化主题,例如Swing,数据库或...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么会出现此错误? - Why did i get this error? 为什么我得到“二元运算符的错误操作数类型”错误? - Why did I get a “bad operand types for binary operator” error? 为什么我得到“ArrayIndexOutOfBoundsException”? - Why did I get an “ArrayIndexOutOfBoundsException”? 为什么我没有得到NotSerializableException? - Why did not I get NotSerializableException? 为什么我得到错误显然jsonStoreEnabled未设置为true,而我确实将其设置为true? - why I get the error Apparently jsonStoreEnabled is not set to true , and I did indeed set it to true? 为什么会出现此错误:java.lang.Exception:XMLEncoder:丢弃语句Vector.add()? - Why did I get this error : java.lang.Exception: XMLEncoder: discarding statement Vector.add()? 当我没有超过限制时为什么会出现异常? - Why do I get an exception when I did not cross the limit? 当我没有在 main 方法中使用 setter 时,为什么会得到 NullPointerException? - Why did I get a NullPointerException when I did not use setter in main method? 为什么在调用this.interrupt()之后得到IllegalThreadStateException? - why did I get IllegalThreadStateException after calling this.interrupt()? 为什么在运行JPA时会出现此异常? - Why did I get this exception when running JPA?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM