创建一个Student的类,属性包含学号,姓名,年龄 ,在此基础上进行对象的添加,删除,遍历
null调用方法必定报错,所以要判断数组里的元素 (本题数组里的每个元素都是一个对象)是否为null
类
package text;
public class Student {
private String id;
private String name;
private int age;
public Student() {
}
public Student(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private static boolean contains(Student[] arr,Student s){
boolean flag=true;
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){ //因为null调用其他的方法会报错
if(arr[i].getId()==s.getId()){
//相同,id重复
flag=false;
}
}
//为空的话直接进行下个索引的判断
}
return flag;
}
private static int indexCount(Student[] arr){
int count=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
count++;
}
}
return count;
}
private static Student[] CreatNewArr(Student[] arr){
Student[] newArr=new Student[arr.length+1];
for (int i = 0; i < arr.length; i++) {
newArr[i]=arr[i];
}
return newArr;
}
private static int judgeIndex(Student[] arr){
int index=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]==null){
index=i;
break;
}
}
return index;
}
}
对象的创建与使用(添加,遍历)
**题目:**创建一个含3个对象的数组,然后在添加一个对象在数组当中,最后遍历
分析:
1,创建一个长度为3的数组
2,创建学生对象
3,把学生对象添加到数组当中
4,再次创建一个学生对象,添加到数组当中
5,判断id的唯一性,来确定是否添加对象
6,添加对象,判断原数组是否存满。未满:直接添加;满了:创建新数组
package text;
public class StudentTest {
public static void main(String[] args) {
//1,创建一个长度为3的数组
Student[] arr=new Student[3];
//2,创建学生对象
Student s1=new Student("001","肘子",19);
Student s2=new Student("002","花木兰",120);
Student s3=new Student("003","头牌",9);
//3,把学生对象添加到数组当中
arr[0]=s1;
arr[1]=s2;
arr[2]=s3;
//4,再次创建一个学生对象,添加到数组当中
Student s4=new Student("004","西施",18);
//5,判断id的唯一性
boolean flag=contains(arr,s4);
//6,添加对象
if(flag){
//6.2id没有重复-----添加学生对象;
//判断当前数组是否满了,没有满,直接添加;满了,创建新数组去添加
int count=indexCount(arr);
if(count==arr.length){
//数组满了,创建新数组
System.out.println("数组满了,创建新数组newArr[]");
Student[] newArr=CreatNewArr(arr);
newArr[newArr.length-1]=s4;
//遍历添加后的数组
for (int i = 0; i < newArr.length; i++) {
System.out.println(newArr[i].getId()+","+newArr[i].getName()+","+newArr[i].getAge());
}
}else{
//数组没有满了,查找数组的空位置,再存储进去
System.out.println("数组没有满了,查找数组的空位置,再存储进arr[]");
int index=judgeIndex(arr);
arr[index]=s4;
//遍历添加后的数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
}
}
}else{
//6.1id重复-----提示重复,重新输入
System.out.println("id重复,重新输入");
}
}
private static boolean contains(Student[] arr,Student s){
boolean flag=true;
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){ //因为null调用其他的方法会报错
if(arr[i].getId()==s.getId()){
//相同,id重复
flag=false;
}
}
//为空的话直接进行下个索引的判断
}
return flag;
}
private static int indexCount(Student[] arr){
int count=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
count++;
}
}
return count;
}
private static Student[] CreatNewArr(Student[] arr){
Student[] newArr=new Student[arr.length+1];
for (int i = 0; i < arr.length; i++) {
newArr[i]=arr[i];
}
return newArr;
}
private static int judgeIndex(Student[] arr){
int index=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]==null){
index=i;
break;
}
}
return index;
}
}
结果
注意
对象的创建与使用 (删除)
**题目:**通过id删除学生信息
**分析:**判断id在数组中存不存在。存在,则删除;不存在,则提示删除失败
找到id对应的索引,将对应的数组元素置为null
package text;
import java.util.Scanner;
public class deleteStudnet {
public static void main(String[] args) {
//1,创建一个长度为3的数组
Student[] arr=new Student[3];
//2,创建学生对象
Student s1=new Student(1,"肘子",19);
Student s2=new Student(2,"花木兰",120);
Student s3=new Student(3,"头牌",9);
//3,把学生对象添加到数组当中
arr[0]=s1;
arr[1]=s2;
arr[2]=s3;
System.out.println("原数组:");
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
}
}
//4,删除指定id的对象----找到该id对应的索引
System.out.println("请输入要删除的id");
Scanner sc=new Scanner(System.in);
int id=sc.nextInt();
int index=discoverIndex(arr,id);//查找该id对应的数组
if(index>=0){
arr[index]=null;
}else{
System.out.println("删除失败");
}
//5,遍历数组
System.out.println("删除后的数组:");
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
}
}
}
private static int discoverIndex(Student[] arr,int id){
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
if(arr[i].getId()==id){
return i;
}
}
}
return -1;//因为不存在-1的索引
}
}
结果