初代if-else版本,没有使用引用数据类型

 该系统记录了学生的姓名,年龄,性别,首先使用了三个一维数组,分别用于记录 学生姓名,年龄,性别。

String [] arrayName =new String[100];
		String [] arrayGender =new String[100];
		String [] arrayAge =new String[100];

然后通过while语句循环执行程序,此处的(condition)设置为True

while(true)
{ //循环体
}

首先,添加方法if(comd==1),当用户输入指令1时执行 

if(comd==1) {                     //添加学生信息
			int i =0;int j =0;int k =0;
			Scanner sname =new Scanner(System.in);
			System.out.println("请输入学生姓名:");
			String name =sname.nextLine();
			if (arrayName[i]==null) {
				
				arrayName[i]= name;
				System.out.println("请输入学生性别:");
				Scanner ssgender =new Scanner(System.in);
				String gender =ssgender.nextLine();
				arrayGender[j]=gender;
				System.out.println("请输入学生年龄:");
				Scanner sage =new Scanner(System.in);
				String age =sage.nextLine();	
				arrayAge[k]=age;
				System.out.println("已添加");
			}else {
				i++;j++;k++;
				arrayName[i]= name;
				System.out.println("请输入学生性别:");
				Scanner ssgender =new Scanner(System.in);
				String gender =ssgender.nextLine();
				arrayGender[j]=gender;
				System.out.println("请输入学生年龄:");
				Scanner sage =new Scanner(System.in);
				String age =sage.nextLine();
				arrayAge[k]=age;
			}
		
			
		}

第二,删除操作,在执行过添加后,如果要进行删除操作,执行if(comd==2);

else if (comd==2) {
			System.out.println("*********************");
			System.out.println("请输入要删除学生姓名:");
			Scanner ssname =new Scanner(System.in);
			String name =ssname.nextLine();
			for (int i = 0; i < arrayName.length;) {
				
				boolean res= arrayName[i].equals(name);
				if(res) {
					
					arrayName[i]=null;
					arrayAge[i]=null;
					arrayGender[i]=null;
					System.out.println("删除成功!");
					break;
				}else {
					i++;
				}
			     					//删除学生
		}
}

三、更改已经添加的成员信息if(comd==3);

else if(comd==3) {
			System.out.println("*********************");
			System.out.println("请输入要更改的学生姓名:");
			Scanner ssname =new Scanner(System.in);
			String name =ssname.nextLine();		//更改学生
			for (int i = 0; i < arrayName.length;) {
				
				boolean res= arrayName[i].equals(name);
				if(res) {
					System.out.println("请输入新名称:");
					Scanner Nname =new Scanner(System.in);
					String nNname =Nname.nextLine();
					arrayName[i]=nNname;
					System.out.println("请输入年龄:");
					Scanner Aage =new Scanner(System.in);
					String aAage =Aage.nextLine();
					arrayAge[i]=aAage;
					System.out.println("请输入性别:");
					Scanner Ggender =new Scanner(System.in);
					String gGgender =Ggender.nextLine();
					arrayGender[i]=gGgender;
					break;
				}else {
					i++;
				}
		}}

四、查询操作   if(comd==4);   //此处遇到问题1:在循环条件中i++执行时dead code问题,后来使用else{i++;}来实现迭代,保证数组能查询至array.length-1处, 后面在使用equals();方法时出现了空指针异常,原因是没有考虑到在数组中查询时,如果之前删除了这个元素,这个位置的array[i]就会为空所以不能写为:

Scanner ssname =new Scanner(System.in);
			String name =ssname.nextLine();
			for (int i = 0; i < arrayName.length;) {
				
				boolean res= arrayName[i].equals(name);

会出现空指针异常,解决办法为name写在前面,因为一般情况下用户的输入不会为空,所以可以通过此方法来规避空指针异常(应该不是最优解.....)。

改完后代码为:

else if (comd==4) {
									//查询信息
			System.out.println("*********************");
			System.out.println("请输入学生姓名:");
			Scanner ssname =new Scanner(System.in);
			String name =ssname.nextLine();
			for (int i = 0; i < arrayName.length;) {
				
				boolean res= name.equals(arrayName[i]);
				
				if(res) {
					
					System.out.println("*********************");
					System.out.println("姓名:"+arrayName[i]+" "+"年龄:"+arrayAge[i]+" "+"性别:"+arrayGender[i]);
					System.out.println("*********************");
					break;
				}else {
					
						i++;
				}
				
			}
			
			
		}

好了,增删改查结束,接下来用了两个条件来执行是否跳出程序和输入错误指令的提示

else if(comd==5) 
		{	
			System.out.println("再见!");
			break;      //跳出程序
		}else {
			System.out.println("没有该指令,请重新输入!");
		}

这种方法的实现比较初级,没有体现java语言的引用数据类型的优势,还可以使用new 一个Student类用二维数组,来存储数据,用参数传递的方法实现比较快捷和高效一些,写一个Student类传String name;int age;int id ,将方法写在类中,然后通过调用来实现。

package com.briup.day07;

public class Student {
	int id ;
	String name;
	public void a(int id,String name) {
		this.id =id;
		this.name =name;
	}
	/**
	 * 这是获取姓名和学号的方法
	 * 
	 */
	public void b() {
		System.out.print(id+":"+name+"   ");
	}
	public  String getName() {
		return name;
	}
	
	}