存在问题
1.方法格式忘记如何写了,忘记写static
//1.2学号唯一性判断方法
//1.2.1干什么? 判断学号的唯一性
//1.2.2 要什么? 要原来的数组 要添加数据的id
//1.2.3需要返回值吗? 需要
public static boolean contain(Student[] arr, int id) {//方法要加static
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
Student stu = arr[i];
int sid = arr[i].getId();
if (sid == id) {
return true;
}
}
}
return false;
}
与构造方法不同之处:构造方法public直接写类名
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
需要记住的知识点
实现
1.题干
定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同 学生的属性:学号,姓名,年龄。 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断 要求2:添加完毕之后,遍历所有学生信息。 要求3:通过id删除学生信息 如果存在,则删除,如果不存在,则提示删除失败。 要求4:删除完毕之后,遍历所有学生信息 要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
2.javabean类
public class Student {
/*
定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
*/
private int id;
private String name;
private int age;
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
/**
* 获取
* @return id
*/
public int getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(int id) {
this.id = id;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
}
3.测试类
public class StudentTest {
public static void main(String[] args) {
/*
定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
*/
//定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
Student[] arr = new Student[3];
Student s1 = new Student(1, "zhangsan", 21);
Student s2 = new Student(2, "lisi", 22);
Student s3 = new Student(3, "wangwu", 23);
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断***********************************************************************************************************88
//1.1创建一个学生对象
Student s4 = new Student(4, "zhaoliu", 24);
//1.2学号唯一性判断
//定义一个方法
boolean flag = contain(arr, s4.getId());
//重复
if (flag) {
//输出id重复
System.out.println("id重复,请重新输入");
} else {
//如果id不重复的话,就把数据存入数组中
//有两种可能:1.数组未满;2.数组已满
//所以(判断数组存储了几个数据,因为后面要用到)
//判断数组存了几个数据定义方法
int count = grtCount(arr);
if (count == arr.length) {
//数组已满,复制到新数组,新数组长度为原来数组长度加一
//方法实现
Student[] newArr = creatNewArr(arr);
newArr[count] = s4;
//要求2:添加完毕之后,遍历所有学生信息。
printArr(newArr);
} else {
//数组未满直接存
arr[count] = s4;
//要求2:添加完毕之后,遍历所有学生信息。
printArr(arr);
}
}
}
//方法区***************************************************************************************************************************
//遍历数组
public static void printArr(Student[] arr) {
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (stu != null) {
System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
}
}
}
//创建新数组,把原数组数据复制进去
public 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;
}
//看数组存了多少数据,是否存满
public static int grtCount(Student[] arr) {
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
count++;
}
}
return count;
}
//1.2学号唯一性判断方法
//1.2.1干什么? 判断学号的唯一性
//1.2.2 要什么? 要原来的数组 要添加数据的id
//1.2.3需要返回值吗? 需要
public static boolean contain(Student[] arr, int id) {//方法要加static
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
Student stu = arr[i];
int sid = arr[i].getId();
if (sid == id) {
return true;
}
}
}
return false;
}
}
public class StudentTest3 {
public static void main(String[] args) {
/*
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
*/
//定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
Student[] arr = new Student[3];
Student s1 = new Student(1, "zhangsan", 21);
Student s2 = new Student(2, "lisi", 22);
Student s3 = new Student(3, "wangwu", 23);
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
/*
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
*/
int index = getIndex(arr, 2);
if (index >= 0) {
arr[index] = null;//删除数据直接让它指向空就可以
printArr(arr);
} else {
System.out.println("该id不存在,删除失败");
}
}
//***************************************************************************************
public static int getIndex(Student[] arr, int id) {
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (arr[i] != null) {
if (stu.getId() == id) {
return i;
}
}
}
return -1;//如果索引不存在返回-1
}
//遍历数组
public static void printArr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (stu!=null){
System.out.println(stu.getId()+","+stu.getName()+","+ stu.getAge());
}
}
}
}
public class StudentTest5 {
public static void main(String[] args) {
/*
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
*/
//定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
Student[] arr = new Student[3];
Student s1 = new Student(1, "zhangsan", 21);
Student s2 = new Student(2, "lisi", 22);
Student s3 = new Student(3, "wangwu", 23);
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
int index = getIndex(arr, 2);
if (index >= 0) {
int age = arr[index].getAge();
int newAge = age + 1;
arr[index].setAge(newAge);
printArr(arr);
} else {
System.out.println("当前索引不存在,修改失败");
}
}
//*****************************************************************************************
//查索引
public static int getIndex(Student[] arr, int id) {
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (arr[i] != null) {
if (stu.getId() == id) {
return i;
}
}
}
return -1;
}
//遍历数组
public static void printArr(Student[] arr) {
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (stu != null) {
System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
}
}
}
}