预期),非法开始表达

add*_*igo 0 java

我无法编译我的程序!

我想我错过了一个大括号,但不能为我的生活看到哪里!

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

    public class AddressBook extends JFrame 
    {

FlowLayout leftLayout;

    JFrame frame;
    JPanel panel;
    JTextField txtname,txtsurname, txtphone, txtmobile, txtaddress, txtpostcode;
    JButton btnadd, btnnext, btnprevious, btnsave, btndelete;
    JLabel jlbname, jlbsurname, jlbphone, jlbmobile, jlbaddress, jlbpostcode;


    String fileInput,readline;
    ArrayList<String> arrayOfFile = new ArrayList<String>();
    ArrayList<Contact> records = new ArrayList<Contact>();



    int index = 0;


    public static void main(String[] args) throws IOException
    {
    new AddressBook();
    }

    public AddressBook()
    {

    //sets window
    frame = new JFrame();
    frame.setTitle("Bournemouth University Address Book");
    frame.setSize(760, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //sets up panel
    panel = new JPanel();
    panel.setLayout(null);
    frame.getContentPane().add(panel);



  //Labels
    jlbname = new JLabel("Name:");
    jlbname.setBounds(10, 50, 100, 20);
    panel.add(jlbname);

    jlbsurname = new JLabel("Surname:");
    jlbsurname.setBounds(350, 50, 100, 20);
    panel.add(jlbsurname);

    jlbphone = new JLabel("Home Number:");
    jlbphone.setBounds(10, 90, 150, 20);
    panel.add(jlbphone);

    jlbmobile = new JLabel("Mobile:");
    jlbmobile.setBounds(350, 90, 150, 20);
    panel.add(jlbmobile);

    jlbaddress = new JLabel("Address:");
    jlbaddress.setBounds(10, 130, 200, 20);
    panel.add(jlbaddress);

    jlbpostcode = new JLabel("PostCode:");
    jlbpostcode.setBounds(10, 170, 250, 20);
    panel.add(jlbpostcode);

    //Text Fields
    txtname = new JTextField("");
    txtname.setBounds(120, 50, 200, 20);
    panel.add(txtname);

    txtsurname = new JTextField("");
    txtsurname.setBounds(440, 50, 200, 20);
    panel.add(txtsurname);

    txtphone = new JTextField("");
    txtphone.setBounds(120, 90, 200, 20);
    panel.add(txtphone);

    txtmobile = new JTextField("");
    txtmobile.setBounds(440, 90, 200, 20);
    panel.add(txtmobile);

    txtaddress = new JTextField("");
    txtaddress.setBounds(120, 130, 520, 20);
    panel.add(txtaddress);

    txtpostcode = new JTextField("");
    txtpostcode.setBounds(120, 170, 250, 20);
    panel.add(txtpostcode);




    //Buttons
    btnadd = new JButton("Add", new ImageIcon("../files/add.png"));
    btnadd.setBounds(330, 320, 100, 50);
    btnadd.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
    btnadd.addActionListener(new ActionListener()
                    {
                        public void actionPerformed(ActionEvent event)
                        {
                            txtname.setText("Add new details here");
            txtsurname.setText("");
            txtphone.setText("");
            txtmobile.setText("");
            txtaddress.setText("");
            txtpostcode.setText("");   
                        }
                    });
    panel.add(btnadd);

    btndelete = new JButton("Delete", new ImageIcon("../files/delete2.png"));
    btndelete.setBounds(390, 250, 100, 50);
    btndelete.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
btndelete.setForeground(Color.red);
      //        btndelete.addActionListener(this);
    panel.add(btndelete);

    btnsave = new JButton("Save", new ImageIcon("../files/save.png"));
    btnsave.setBounds(490, 250, 100, 50);
    btnsave.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
    btnsave.addActionListener(new ActionListener()
                    {
                        public void actionPerformed(ActionEvent event)
                        {
                          try
        {
        BufferedWriter fileOut = new BufferedWriter(new FileWriter("../files/contacts.buab", true)); 
        fileOut.append(txtname.getText());
        fileOut.append("\n");    
        fileOut.append(txtsurname.getText());
        fileOut.append("\n");   
        fileOut.append(txtphone.getText());
        fileOut.append("\n");       
        fileOut.append(txtmobile.getText());
        fileOut.append("\n");  
        fileOut.append(txtaddress.getText());
        fileOut.append("\n");   
        fileOut.append(txtpostcode.getText() + "\r");



        fileOut.close(); 
                    }
        catch (IOException ioe)
        {
        JOptionPane.showMessageDialog(null, ioe.getMessage());
                }

                        }
                    });
    panel.add(btnsave);

    btnprevious = new JButton("Prev", new ImageIcon("../files/left.png"));
    btnprevious.setBounds(280, 250, 100, 50);
    btnprevious.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
    btnprevious.addActionListener(new ActionListener()
                    {public void actionPerformed(ActionEvent event)
                        {
                            index--;
                        displaycontact();
                        }

                    });
    panel.add(btnprevious);

    btnnext = new JButton("Next", new ImageIcon("../files/right.png"));
    btnnext.setBounds(180, 250, 100, 50);
    btnnext.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
    btnnext.addActionListener(new ActionListener()
                    {
                        public void actionPerformed(ActionEvent event)
                        {
                         index ++;
                         displaycontact();
                         }


                    });
    panel.add(btnnext);

    frame.setVisible(true);
    panel.setVisible(true);




    JMenuBar mb = new JMenuBar();
            frame.setJMenuBar(mb);

            JMenu insert = new JMenu("Import");
            mb.add(insert);
            JMenuItem imp = new JMenuItem("Add New Contacts");
            insert.add(imp);
            imp.addActionListener(new ActionListener()

          {public void actionPerformed(ActionEvent event)
    {
        JFileChooser fileopen = new JFileChooser();

        int ret = fileopen.showDialog(null, "Open file");

        if (ret == JFileChooser.APPROVE_OPTION) 
        {
             try {
            BufferedReader fileStream = new BufferedReader(new FileReader("src/contacts.buab"));
            while (true)
            {
            String fileInput = fileStream.readLine();
            if(fileInput==null)
                break;

        Contact a = new Contact();
            a.setname(fileInput);
            a.setsurname(fileStream.readline());
            a.setphone(fileStream.readLine());
            a.setmobile(fileStream.readLine());
            a.setaddress(fileStream.readLine());
            a.setpostcode(fileStream.readline());
            Contacts.add(a);
        System.out.println(a.getname());

            }

            fileStream.close();
                   }
                   catch (Exception ex) 
                     {  
                     JOptionPane.showMessageDialog(null, ioe.getMessage());
                }
            displaycontact();
                   }});






        }

          public void displaycontact()
            {
                txtname.setText(contacts.get(index).name);
                txtsurname.SetText(contacts.get(index).surname);
                txtphone.setText(contacts.get(index).phone);
                txtmobile.setText(contacts.get(index).mobile);
                txtAddress.setText(contacts.get(index).address);
            }


    }


  }    
Run Code Online (Sandbox Code Playgroud)

请帮助我在这里待了3个小时!

Mr.*_* 安宇 6

你在这里缺少大括号:

            displaycontact();
        }}});  // <- HERE
Run Code Online (Sandbox Code Playgroud)

使用您的代码几乎不可能看到它,因为格式很差.您应该使用突出显示匹配大括号的文本编辑器.这可以让您快速查看闭合括号的内容.

我建议你重新格式化代码,以便有适当的缩进.您有很多缩进,因此您可能需要考虑使用两个空格或制表符大小,并将制表符宽度设置为两个.正确的缩进使您可以扫描代码以查看大括号关闭的位置.

我在Eclipse中重新格式化了代码,导致问题的ActionListener现在看起来像这样:

imp.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent event) {
    JFileChooser fileopen = new JFileChooser();

    int ret = fileopen.showDialog(null, "Open file");

    if (ret == JFileChooser.APPROVE_OPTION) {
      try {
        BufferedReader fileStream = new BufferedReader(new FileReader("src/contacts.buab"));
        while (true) {
          String fileInput = fileStream.readLine();
          if (fileInput == null)
            break;

          Contact a = new Contact();
          a.setname(fileInput);
          a.setsurname(fileStream.readline());
          a.setphone(fileStream.readLine());
          a.setmobile(fileStream.readLine());
          a.setaddress(fileStream.readLine());
          a.setpostcode(fileStream.readline());
          Contacts.add(a);
          System.out.println(a.getname());

        }

        fileStream.close();
      } catch (Exception ex) {
        JOptionPane.showMessageDialog(null, ioe.getMessage());
      }
      displaycontact();
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个花括号blob现在是三行,并且每行的缩进比前一行少?这将使你在错过大括号的地方立即显而易见.