Java Arraylist-编译错误

Java Arraylist-编译错误,java,Java,我试图让我的程序编译,但它给我5个错误 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

我试图让我的程序编译,但它给我5个错误

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 implements ActionListener
{

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;

    List<Person> people = new ArrayList<Person>();




    int i = 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 InnerAListener());
                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(new InnerBListener());
                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 InnerCListener());
                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 InnerDListener());
                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 InnerEListener());
                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 InnerFListener());

            }




               private class InnerAListener
                       implements ActionListener
                       {
                            public void actionPerformed(final ActionEvent e)
                                            {
                                            Clearscreen();
                                            }
                       }

                       private class InnerBListener
                       implements ActionListener
                       {
                            public void actionPerformed(final ActionEvent e)
                                            {
                                            Delete();
                                            }
                       }

                       private class InnerCListener
                       implements ActionListener
                       {
                            public void actionPerformed(final ActionEvent e)

                                            {
                                            Save();
                                            }
                       }



                       private class InnerDListener
                       implements ActionListener
                       {
                            public void actionPerformed(final ActionEvent e)
                                            {
                                            Previous();
                                            }
                       }

                       private class InnerEListener
                       implements ActionListener
                       {
                            public void actionPerformed(final ActionEvent e)
                                            {
                                            Next();
                                            }
                       }

                       private class InnerFListener
                       implements ActionListener
                       {
                        public void actionPerformed(final ActionEvent e)

                                {
                                ImportContacts();
                                }
                       }




        public void previous()
        {
                if (i > 0)
                {
                    i--;
                }

                display(people.get(i));    
        }

        public void Next()
        {
                if(i < people.size() - 1)
                    {
                    i++;
                }

                display(people.get(i));
        }

        private void display(final Person person)
        {
                txtname.setText(person.getname());
                txtsurname.setText(person.getsurname());
                txtphone.setText(person.getphone());
                txtmobile.setText(person.getmobile());
                txtaddress.setText(person.getaddress());
                txtpostcode.setText(person.getpostcode());
        }

        public void Save()
        {
                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());
                                }

                }


        public void Clearscreen()

            {
            txtname.setText("Add new details here");
            txtsurname.setText("");
            txtphone.setText("");
            txtmobile.setText("");
            txtaddress.setText("");
            txtpostcode.setText("");
            }

        public void ImportContacts
        {

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

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

            if (ret == JFileChooser.APPROVE_OPTION) 

            {
                    try
            {
                    final File    file;
                    final Scanner scanner;

                    file    = new File("../files/contacts.buab");
                    scanner = new Scanner(file);

                    while(scanner.hasNextLine())
                {
                final Person person;

                person = new Person(scanner);
                people.add(person);
                }
                }
                catch (IOException ioe)
                {
                    JOptionPane.showMessageDialog(null, ioe.getMessage());
                }

                display(people.get(0)); 

        }

     }     
    };
他们说{应该是一个(,然后它说表达式的开头是非法的,转到下面的一行

     public void actionPerformed(ActionEvent event)
怎么了?

只是一些建议:

  • ArrayList名称不应该以大写字母开头(名称而不是名称)。只有类应该以大写字母开头。这是一种样式约定,可以使代码更具可读性,而不是严格的规则
  • ArrayList应该是类的私有成员。这在您发布的代码中并不明显
  • 为了避免使用许多ArrayList,您应该定义一个Person类,该类的成员包括姓名、姓氏和电话
这样做可以:

public class Person {
  private String name;
  private String surname;

  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getSurname() {
    return surname;
  }  
  public void setSurname(String name) {
    this.surname = surname;
  }
}
只是一些建议:

  • ArrayList名称不应该以大写字母开头(名称而不是名称)。只有类应该以大写字母开头。这是一种样式约定,可以使代码更具可读性,而不是严格的规则
  • ArrayList应该是类的私有成员。这在您发布的代码中并不明显
  • 为了避免使用许多ArrayList,您应该定义一个Person类,该类的成员包括姓名、姓氏和电话
这样做可以:

public class Person {
  private String name;
  private String surname;

  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getSurname() {
    return surname;
  }  
  public void setSurname(String name) {
    this.surname = surname;
  }
}

我认为这与嵌套的if in有关:

for (a = 0, b = 0; a < temp.size(); a++, b++) {
  if (b == 5) {
    b = 0;
  }
  if (b == 0)
// ...
否则,一旦b变为0,它将转到下一个if语句


检查kgiannakakis说的话……这非常重要。

我认为这与嵌套if in有关:

for (a = 0, b = 0; a < temp.size(); a++, b++) {
  if (b == 5) {
    b = 0;
  }
  if (b == 0)
// ...
否则,一旦b变为0,它将转到下一个if语句


检查kgiannakakis所说的……这非常重要。

首先,这是Java,因此请遵循命名约定和良好的编程实践:

List<String> name = new ArrayList<String>();
List<String> surname = new ArrayList<String>();
List<String> phone = new ArrayList<String>();
List<String> mobile = new ArrayList<String>();
List<String> address = new ArrayList<String>();
List<String> temp = new ArrayList<String>();

try
{
    BufferedReader infoReader = new BufferedReader(new FileReader("../files/contacts.buab"));
    int i = 0;
    String loadContacts;

    while ((loadContacts = infoReader.readLine()) !=null)
    {
        temp.add(loadContacts);
        i++;
    }

    int a = 0;
    int b = 0;

    for (a = 0, b = 0; a < temp.size(); a++, b++)
    {
        if (b == 0)
        {
            name.add(temp.get(a));    
        }
        else if (b == 1)
        {
            surname.add(temp.get(a));    
        }
        else if (b == 2)
        {
            phone.add(temp.get(a));    
        }
        else if (b == 3)
        {
            mobile.add(temp.get(a));    
        }   
        else if (b == 4)
        {
            address.add(temp.get(a));    
        }         
        else if (b == 5)
        {
            b = 0;
        }
    }
}
catch (IOException ioe)
{
    JOptionPane.showMessageDialog(null, ioe.getMessage());
}

txtName.setText(name.get(0));
txtSurname.setText(surname.get(0));
txtPhone.setText(phone.get(0));
txtMobile.setText(mobile.get(0));
txtAddress.setText(address.get(0));

public void previous()
{
    if (i > 0)
    {
        i--;
    }

    txtName.setText(name.get(i));
    txtSurname.setText(surname.get(i));
    txtPhone.setText(phone.get(i));
    txtMobile.setText(mobile.get(i));
    txtAddress.setText(address.get(i));
}

public void Next()
{
    if(i < temp.size() - 1)
    {
        i++;
    }

    txtName.setText(name.get(i));
    txtSurname.setText(surname.get(i));
    txtPhone.setText(phone.get(i));
    txtMobile.setText(mobile.get(i));
    txtAddress.setText(address.get(i));
 }
我宁愿使用Scanner而不是BufferedReader,因为它更灵活,所以我将构造函数更改为:

    public Person(final Scanner scanner)
        throws IOException,
               InvalidPersonException
    {
        firstName = readLine(reader, "First name");
        lastName  = readLine(reader, "Last name");
        phone     = readLine(reader, "Phone");
        mobile    = readLine(reader, "Mobile");
        address   = readLine(reader, "Address");
    }

    private static String readLine(final BufferedReader reader, 
                                   final String type)
        throws IOException,
               InvalidPersonException
    {
        final String line;

        if(!(scanner.hasNextLine()))
        {
            throw new InvalidPersonException("missing: " + type);
        }

        line = scanner.nextLine();

        return (line);
    }
这将使代码简化为(以及其他一些更改):

List people=new ArrayList();
尝试
{
最终文件;
最终扫描仪;
file=新文件(“../files/contacts.buab”);
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine())
{
最后一人;
人员=新人员(扫描仪);
人。添加(人);
}
}
捕获(ioe异常ioe)
{
showMessageDialog(null,ioe.getMessage());
}
显示(people.get)(0);
公开作废以前的()
{
如果(i>0)
{
我--;
}
显示(人。获取(i));
}
下一个公共空间()
{
如果(i
即使你不采用Person类的想法,也要采用display的想法,这样你就不会在3个地方有相同的代码……这会让你的生活更轻松

现在唯一的问题是,你从来没有发布错误是什么,所以我不能真正帮助你(现在)

大宗报价


首先,这是Java,因此请遵循命名约定和良好编程实践:

List<String> name = new ArrayList<String>();
List<String> surname = new ArrayList<String>();
List<String> phone = new ArrayList<String>();
List<String> mobile = new ArrayList<String>();
List<String> address = new ArrayList<String>();
List<String> temp = new ArrayList<String>();

try
{
    BufferedReader infoReader = new BufferedReader(new FileReader("../files/contacts.buab"));
    int i = 0;
    String loadContacts;

    while ((loadContacts = infoReader.readLine()) !=null)
    {
        temp.add(loadContacts);
        i++;
    }

    int a = 0;
    int b = 0;

    for (a = 0, b = 0; a < temp.size(); a++, b++)
    {
        if (b == 0)
        {
            name.add(temp.get(a));    
        }
        else if (b == 1)
        {
            surname.add(temp.get(a));    
        }
        else if (b == 2)
        {
            phone.add(temp.get(a));    
        }
        else if (b == 3)
        {
            mobile.add(temp.get(a));    
        }   
        else if (b == 4)
        {
            address.add(temp.get(a));    
        }         
        else if (b == 5)
        {
            b = 0;
        }
    }
}
catch (IOException ioe)
{
    JOptionPane.showMessageDialog(null, ioe.getMessage());
}

txtName.setText(name.get(0));
txtSurname.setText(surname.get(0));
txtPhone.setText(phone.get(0));
txtMobile.setText(mobile.get(0));
txtAddress.setText(address.get(0));

public void previous()
{
    if (i > 0)
    {
        i--;
    }

    txtName.setText(name.get(i));
    txtSurname.setText(surname.get(i));
    txtPhone.setText(phone.get(i));
    txtMobile.setText(mobile.get(i));
    txtAddress.setText(address.get(i));
}

public void Next()
{
    if(i < temp.size() - 1)
    {
        i++;
    }

    txtName.setText(name.get(i));
    txtSurname.setText(surname.get(i));
    txtPhone.setText(phone.get(i));
    txtMobile.setText(mobile.get(i));
    txtAddress.setText(address.get(i));
 }
我宁愿使用Scanner而不是BufferedReader,因为它更灵活,所以我将构造函数更改为:

    public Person(final Scanner scanner)
        throws IOException,
               InvalidPersonException
    {
        firstName = readLine(reader, "First name");
        lastName  = readLine(reader, "Last name");
        phone     = readLine(reader, "Phone");
        mobile    = readLine(reader, "Mobile");
        address   = readLine(reader, "Address");
    }

    private static String readLine(final BufferedReader reader, 
                                   final String type)
        throws IOException,
               InvalidPersonException
    {
        final String line;

        if(!(scanner.hasNextLine()))
        {
            throw new InvalidPersonException("missing: " + type);
        }

        line = scanner.nextLine();

        return (line);
    }
这将使代码简化为(以及其他一些更改):

List people=new ArrayList();
尝试
{
最终文件;
最终扫描仪;
file=新文件(“../files/contacts.buab”);
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine())
{
最后一人;
人员=新人员(扫描仪);
人。添加(人);
}
}
捕获(ioe异常ioe)
{
showMessageDialog(null,ioe.getMessage());
}
显示(people.get)(0);
公开作废以前的()
{
如果(i>0)
{
我--;
}
显示(人。获取(i));
}
下一个公共空间()
{
如果(i
即使你不采用Person类的想法,也要采用display的想法,这样你就不会在3个地方有相同的代码……这会让你的生活更轻松

现在唯一的问题是,你从来没有发布错误是什么,所以我不能真正帮助你(现在)

大宗报价


请检查缩进!:)另外,你的代码到底应该做什么?为什么arraylist显示?你需要下一个和上一个做什么?以及你的命名和括号约定:)请务必告诉我们错误是怎么说的!要修复您当前的代码,请看这篇文章:您为侦听器提供的代码当前是错误的。因此,请清理这些错误(我更喜欢显示的内部类方法,而不是您现在所做的),然后将代码重新发布到这里,然后我再看一看。由jove检查您的缩进!:)另外,你的代码到底应该做什么?为什么要显示arraylist?你需要下一个和上一个做什么?以及你在这方面的命名和括号约定:)请始终告诉我们错误是怎么说的!要修复你当前的代码,请看这篇文章:你为监听器准备的代码当前是错误的。所以请清理一下(我更喜欢我展示的内部类方法,而不是您现在正在做的事情)在这里重新发布代码,然后我再看一看。谢谢你的帮助!我对java非常陌生。代码的第一位必须在一个单独的类中,即单独的文件中??其他的位在哪里?我会把每个非内部类放在它自己的文件中。所以我会制作一个Person.java文件并将它放在同一个位置