package 课设;
import java.util.Scanner;
class Person
{
String name;
int number;
}
class connect
{
Person a[];
public static int number;
public connect()
{
a=new Person[100];
connect.number=0;
}
public String add(String name,int number)
{
if(connect.number == 0)
System.out.println("请先添加联系人!");
if(connect.number>99)
return "添加失败";
a[connect.number]=new Person();
a[connect.number].name=name;
a[connect.number].number=number;
connect.number++;
return "添加成功";
}
public Person seek(String name)
{
if(connect.number == 0)
System.out.println("请先添加联系人!");
for(int i=0;i<connect.number;i++)
{
if((a[i].name).equals(name))
{
System.out.println("联系人: "+a[i].name+" 电话:"+a[i].number);
return a[i];
}
}
return null;
}
public void look()
{
if(connect.number == 0)
System.out.println("请先添加联系人!");
for(int i=0;i<connect.number;i++)
{
System.out.println("联系人 "+a[i].name+" 电话 "+a[i].number);
}
}
public String delete(String name)
{
if(connect.number == 0)
System.out.println("请先添加联系人:");
for(int i=0;i<connect.number;i++)
{
if((a[i].name).equals(name))
{
a[i]=a[connect.number-1];
connect.number=connect.number-1;
return "删除成功";
}
}
return "删除失败";
}
}
public class 通讯录
{
public static void main(String[]args)
{
int num3=2;
Scanner sc=new Scanner(System.in);
Scanner input = new Scanner(System.in);
System.out.println("\t\t\t欢迎使用通讯录系统\n");
System.out.println("\t\t\t1.用户端进入\n\n\t\t\t2.退出\n");
System.out.println("____________________________________________________________________\n\n");
System.out.print("请选择相应选项:");
int num2 = sc.nextInt();
do {
switch (num2)
{
case 1:
{
connect c = new connect();
System.out.println("\t\t\t1.浏览\n");System.out.println("\t\t\t2.查找\n");
System.out.println("\t\t\t3.添加\n");System.out.println("\t\t\t4.删除\n");
System.out.println("\t\t\t5.退出\n");
System.out.println("输入指令:");
int num1 = input.nextInt();
switch (num1)
{
case 1:c.look();break;
case 2:
{
System.out.println("输入查找的名字:");
String n1 = sc.next();c.seek(n1);
}break;
case 3:
{
System.out.println("输入要添加的人数:");
int s=sc.nextInt();
connect.number=s;
for(int i=0;i<s;i++)
{
System.out.println("请输入第"+(i+1)+"个人的个人信息:");
String name=sc.next();
int number=sc.nextInt();
c.add(name,number);
}
}break;
case 4:
{
System.out.println("输入删除的姓名:");
String n3 = sc.next();c.delete(n3);
}break;
default:
{
System.out.println("\t\t\t谢谢您的使用\n");
System.exit(0);
}
}
}break;
case 2:System.out.println("\t\t\t谢谢您的使用\n");break;
default:System.out.println("输入有误!");
num2=2;
}
System.out.println("如果继续使用输入1,退出请输入2");
Scanner pd=new Scanner(System.in);
num3 = pd.nextInt();
}while(num3==1);
System.out.println("谢谢使用!");
}
}
你把报错信息截图发出来,看代码的不容易找到痛点。
1.不建议你使用数组进行存储,可以多学一点知识,比如列表,等学完了列表可以再来考虑通讯录
2.删除数据那里会有问题的,删除数组中的一个元素,其他后面的元素都需要往前移动一位,然后把最后一个值置为null
3.添加数据直接创建一个对象添加进去即可,你这里添加的方法中number和connect.number很容易混淆,建议区分一下
4.类名包名不要使用中文
5.类名如果是大写,那就全部采用大写的方式
6.最后还是建议你学完列表之后再来做这个,肯定会比现在要简单,学完也用不了多久的
7.每次进入while循环的时候,你都会重新创建一个connect数组,以前的数组就没了
8.删掉那个输入人数等于connect.number=s,然后添加数据的时候,你的下标就自然的变了,让下标在添加的时候和删除的时候自己发生改变,不要人为的去指定
下面对你的代码进行了一些改进,基本模板还是按照你的套路来的
package cn.base;
import java.util.Scanner;
class Person {
String name;
int number;
}
class Connect {
Person a[];
public static int number;
public Connect() {
a = new Person[100];
Connect.number = 0;
}
public String add(String name, int phoneNumber) {
if (Connect.number > 99){
return "添加失败";
}
Person person = new Person();
person.name = name;
person.number = phoneNumber;
a[Connect.number++] = person;
return "添加成功";
}
public Person seek(String name) {
if (Connect.number == 0) {
System.out.println("请先添加联系人!");
return null;
}
for (int i = 0; i < Connect.number; i++) {
if ((a[i].name).equals(name)) {
System.out.println("联系人: " + a[i].name + " 电话:" + a[i].number);
return a[i];
}
}
return null;
}
public void look() {
if (Connect.number == 0){
System.out.println("请先添加联系人!");
return;
}
for (int i = 0; i < Connect.number; i++) {
System.out.println("联系人 " + a[i].name + " 电话 " + a[i].number);
}
}
public String delete(String name) {
if (Connect.number == 0){
System.out.println("请先添加联系人:");
return "";
}
for (int i = 0; i < Connect.number; i++) {
if ((a[i].name).equals(name)) {
System.arraycopy(a, i + 1, a, i, Connect.number - i);
a[Connect.number-1] = null;
Connect.number = Connect.number - 1;
return "删除成功";
}
}
return "删除失败";
}
}
class Contract {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("\t\t\t欢迎使用通讯录系统\n");
System.out.println("\t\t\t1.用户端进入\n\n\t\t\t2.退出\n");
System.out.println("____________________________________________________________________\n\n");
System.out.print("请选择相应选项:");
int command = sc.nextInt();
do {
switch (command) {
case 1:
showMenu(sc);
break;
case 2:
System.out.println("\t\t\t谢谢您的使用\n");
break;
default:
System.out.println("输入有误!");
}
System.out.println("如果继续使用输入1,退出请输入2");
command = sc.nextInt();
} while (command == 1);
System.out.println("谢谢使用!");
}
private static void showMenu(Scanner sc) {
Connect c = new Connect();
System.out.println("\t\t\t1.浏览\n");
System.out.println("\t\t\t2.查找\n");
System.out.println("\t\t\t3.添加\n");
System.out.println("\t\t\t4.删除\n");
System.out.println("\t\t\t5.退出\n");
System.out.println("输入指令:");
int command = sc.nextInt();
switch (command) {
case 1:
c.look();
break;
case 2: {
System.out.println("输入查找的名字:");
c.seek(sc.nextLine());
}
break;
case 3: {
System.out.println("输入要添加的人数:");
int s = sc.nextInt();
for (int i = 0; i < s; i++) {
System.out.println("请输入第" + (i + 1) + "个人的个人信息:");
String name = sc.next();
int number = sc.nextInt();
c.add(name, number);
}
}
break;
case 4: {
System.out.println("输入删除的姓名:");
String n3 = sc.next();
c.delete(n3);
}
break;
default: {
System.out.println("\t\t\t谢谢您的使用\n");
System.exit(0);
}
}
}
}