如何解决这些语法错误?

时间:2016-12-12 20:54:36

标签: java syntax-error

我是业余/初学Java程序员。我编写了以下GUI类来练习我自学的技能。

我收到了很多语法错误。

这是我的班级:

package MyGUIStuff;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Scanner;

public class MyFrame {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        JLabel lbl = new JLabel ("Register:");
        JTextField jtf = new JTextField (20);
        JPanel pnl = new JPanel();

        JFrame frame = new JFrame ("File Writer");
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        pnl.add(lbl);
        pnl.add(jtf);

    jtf.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    String str = new String (jtf.getText());

                    File file = new File ("register.txt");
                    if (!file.exists())
                    {
                        file.createNewFile();
                    }
                    FileWriter fw = new FileWriter (file.getAbsoluteFile(), true);
                    BufferedWriter bw = new BufferedWriter(fw);
                    bw.write(str);
                    bw.newLine();
                    bw.close();

                    System.out.println("Done!");

                }catch (IOException e){
                    e.printStackTrace();

                }
        });

        frame.add(pnl);

   }
}

如何解决错误?

1 个答案:

答案 0 :(得分:1)

修复大量错误的方法是忽略除第一个错误之外的所有错误。修复,重新编译并修复第一个错误。修复,重新编译并修复第一个错误。等等。

第一个错误

所以我得到的第一个错误是:

MyFrame.java:50: error: illegal start of type
        });
         ^

我看看第50行附近发生了什么。我注意到actionPerformed方法缺少其右括号。我插入它,以便第50行周围的代码如下所示:

                }catch (IOException e){
                    e.printStackTrace();

                }
            }
        });

然后我重新编译并查看错误列表。

唯一的错误

仅修复第一个错误然后重新编译的好处之一是,几个错误通常会神奇地消失。通过仅修复第一个错误,我们将6个错误降低到只有1个错误:

MyFrame.java:46: error: variable e is already defined in method actionPerformed(ActionEvent)
                }catch (IOException e){
                                    ^

我环顾四周,看看宣布e的位置。它在两个地方声明:actionPerformed方法的参数和catch块中捕获的异常。其中一个需要重命名。我将捕获的异常重命名为ex

                }catch (IOException ex){
                    ex.printStackTrace();

                }

然后我重新编译并查看错误列表。

没有错误

现在没有编译时错误。如果这是我的程序,那就是我要确保它正常工作。