这是源文件。
import java.util.*;
public class AddressList
{
public static void main(String[] args)
{
People[] apeople = new People[5];
apeople[0] = new People("01", "AAA", "男", "123456","北京");
apeople[1] = new People("02", "BBB", "女", "456789","福建");
apeople[2] = new People("03", "CCC", "男", "555555","广东");
apeople[3] = new People(null, null, null, null, null);
apeople[4] = new People(null, null, null, null, null);
Scanner in = new Scanner(System.in);
for(;;)
{
System.out.println("1.查询\n" + "2.增加\n" + "3.修改\n" + "4.删除\n" +"5.退出");
System.out.println("请输入操作:");
int ch = in.nextInt();
switch(ch)
{
case 1: query();
break;
case 2: add();
break;
case 3: modify();
break;
case 4: remove();
break;
case 5: exit();
break;
}
}
}
}
class People
{
public People(String n1,String n2,String s, String p, String a)
{
num = n1;
name = n2;
sex = s;
phone = p;
address = a;
}
public void query()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the number you want to query: ");
String n = in.nextLine();
for(int i = 0; i < apeople.length; i++)
{
int a = apeople[i].getnum().compareTo(n);
if(a == 0)
{
System.out.println("It has this note");
display();
}
else continue;
}
}
public void display()
{
System.out.println("编号" + " " + "姓名" + " " + "性别" + " " + "电话" + " " +
"地址" );
for(People p: ap)
System.out.println(p.getnum() + " " + p.getname() + " " + p.getsex() + " " + p.getphone() + " "+ p.getaddress());
}
public String getnum()
{
return num;
}
public String getname()
{
return name;
}
public String getsex()
{
return sex;
}
public String getphone()
{
return phone;
}
public String getaddress()
{
return address;
}
private String num ;
private String name ;
private String sex ;
private String phone ;
private String address ;
}
编译器指出在query方法和display方法中无法解析apeople,就是说访问不了主类中apeople数组。请教高手应如何解决这个问题?
------解决方案--------------------
楼主需要重新设计,不然问题会很多,远远超过你所预料。
就算是“学c/c++出身”,这种设计也是很糟糕的。
我重新设计了你的程序,你可以比较一下不同之处,分析一下那种设计方法更好:
- Java code
public class AddressList { private People[] peoples; private int top; private java.util.Scanner in = new java.util.Scanner(System.in); public AddressList(int size) { peoples = new People[size]; } public boolean addPeople(People p) { if (top < peoples.length) { peoples[top++] = p; return true; } return false; } public String toString() { if (top == 0) return "无记录"; StringBuffer result = new StringBuffer(); result.append("编号\t姓名\t性别\t电话\t地址\n"); for (int i = 0; i < top; i++) result.append(peoples[i].toString() + '\n'); return result.toString(); } public void prompt() { System.out.println("1.查询\n2.增加\n3.修改\n4.删除\n5.退出"); System.out.println("请输入操作:"); switch(in.nextInt()) { case 1: // 查询 System.out.println(this); prompt(); break; case 2: // 添加 in.nextLine(); if (addPeople(new People(in.nextLine(), in.nextLine(), (in.nextLine().equals("男") ? People.Sex.MALE : People.Sex.FEMALE), in.nextLine(), in.nextLine()))) System.out.println("添加成功"); else System.out.println("添加失败"); prompt(); break; case 3: // 查询 break; case 4: // 删除 break; case 5: // 退出 break; } } public static void main(String[] args) { AddressList al = new AddressList(5); al.prompt(); }}class People { public enum Sex { MALE, FEMALE } private String num; private String name; private Sex sex; private String phone; private String address; public People(String n1, String n2, Sex s, String p, String a) { num = n1; name = n2; sex = s; phone = p; address = a; } public String getnum() { return num; } public String getname() { return name; } public Sex getsex() { return sex; } public String getphone() { return phone; } public String getaddress() { return address; } public String toString() { return num + '\t' + name + '\t' + (sex==Sex.MALE?'男':'女') + '\t' + phone + '\t'+ address; } }