题目:
定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
要求1∶再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2︰添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
要求4︰删除完毕之后,遍历所有学生信息。
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
目录
Student类:
package test04_student;
public class Student {
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;
}
}
StudentTest类:
package test04_student;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
//定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
//要求1∶再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
//要求2︰添加完毕之后,遍历所有学生信息。
//要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
//要求4︰删除完毕之后,遍历所有学生信息。
//要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
//定义一个长度为3的数组
Student[] arr=new Student[3];
//创建对象
Student stu1=new Student(1,"wlh",67);
Student stu2=new Student(2,"ryj",68);
//Student stu3=new Student(3,"pxl",69);
arr[0]=stu1;
arr[1]=stu2;
//arr[2]=stu3;
//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
Scanner sc=new Scanner(System.in);
//创建一个对象用于添加
Student stu4=new Student(4,"wqf",66);
//进行唯一性判断
boolean flag=weiyixing(arr,stu4.getId());
if(flag){
//存在
System.out.println("添加的学号已存在,请重新输入");
}else {
//不存在
//添加
int count =count(arr);
//1.数组未满
if(count<arr.length){
//直接添加
//count有两个意思
//1.表示有数据的个数
//2.表示添加直接从count开始
arr[count]=stu4;
}
//2.数组已满
if(count==arr.length){
//给arr赋值一个新数组,长度为arr.length+1
arr=newarr(arr);
//添加
//count有两个意思
//1.表示有数据的个数
//2.表示添加直接从count开始
arr[count]=stu4;
}
}
//要求2︰添加完毕之后,遍历所有学生信息。
bL(arr);
//要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
System.out.println("请输入要删除的id");
int id=sc.nextInt();
//判断是否存在
boolean flag1=weiyixing(arr,id);
//判断,如果输入的id存在,则删除,如果不存在,则提示删除失败
if (flag1){
//存在,删除
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
if(arr[i].getId()==id){
arr[i]=null;
}
}
}
//要求4︰删除完毕之后,遍历所有学生信息。
bL(arr);
}else {
System.out.println("id不存在,删除失败");
}
//要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
System.out.println("请输入要查询的id");
//键盘录入
int id1=sc.nextInt();
//是否存在判断
boolean flag2=weiyixing(arr,id1);
if(true){
//存在,年龄+1
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
if(arr[i].getId()==id1){
arr[i].setAge(arr[i].getAge()+1);
}
}
}
//遍历
bL(arr);
}
}
//干什么 判断唯一性
//需要什么 数组 添加的id
//返不返回 需要返回
public static boolean weiyixing(Student[] arr,int id){
for (int i = 0; i < arr.length; i++) {
Student stu=arr[i];
//判断,如果arr[i]为空,则不进行唯一性判断,因为如果为空,stu.getId()会报错,因为没有id
if (stu!=null){
int sid=stu.getId();
if(sid==id){
return true;
}
}
}
return false;
}
//计算数组中有效数据的次数
public static int count(Student[] arr){
int count=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i] !=null){
count++;
}
}
return count;
}
//创建一个新数组
public static Student[] newarr(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 void bL(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student stu=arr[i];
//判断,如果arr[i]为空,则不输出,因为如果为空,stu.getId()会报错,因为没有id
if(stu!=null){
System.out.println(arr[i].getId()+" "+arr[i].getName()+" "+arr[i].getAge());
}
}
}
}
运行结果:
1 wlh 67
2 ryj 68
4 wqf 66
请输入要删除的id
4
1 wlh 67
2 ryj 68
请输入要查询的id
2
1 wlh 67
2 ryj 69
注意:
if(true){
//存在,年龄+1
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
if(arr[i].getId()==id1){
arr[i].setAge(arr[i].getAge()+1);
}
}
}
//遍历
bL(arr);
}
其中的 arr[i].setAge(arr[i].getAge()+1);这段代码,本来我写的 arr[i].getAge()=arr[i].getAge()+1;
但是它报错了,因为arr[i].getAge()是一个数值,而等号左边应该是一个变量,所以改成arr[i].setAge(arr[i].getAge()+1);