Java Arraylist-编译错误
我试图让我的程序编译,但它给我5个错误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
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文件并将它放在同一个位置