//定义一个长度为3的数组,数组存储1-3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
//要求1:在此添加一个学生对象,并在添加的时候进行学号的唯一性判断
//要求2,添加完毕后,遍历所有学生信息
//要求3:通过id删除学生信息
//如果存在,则删除,如果不存在,则提示删除失败
//要求4:删除完毕后,遍历所有学生信息。
//要求5:查询数组id为123的学生,如果存在,则将他的年龄+1岁
首先建立一个名为arr的Packagr ,然后建立A和Atest的两个class类。
package arr;
//定义一个长度为3的数组,数组存储1-3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
//要求1:在此添加一个学生对象,并在添加的时候进行学号的唯一性判断
//要求2,添加完毕后,遍历所有学生信息
//要求3:通过id删除学生信息
//如果存在,则删除,如果不存在,则提示删除失败
//要求4:删除完毕后,遍历所有学生信息。
//要求5:查询数组id为123的学生,如果存在,则将他的年龄+1岁。
public class A {
private int ID;
private String name;
private int age;
public A(int ID, String name, int age) {
this.ID = ID;
this.name = name;
this.age = age;
}
public A(){}
public int getID() {
return ID;
}
public void setID(int 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;
}
}
package arr;
import java.util.Scanner;
//定义一个长度为3的数组,数组存储1-3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
//要求1:在此添加一个学生对象,并在添加的时候进行学号的唯一性判断
//要求2,添加:1.如果数组中已满,则建立一个比原来数组大的新数组,将数组元素放入新数组中
// 2.如果数组没满,则先遍历数组中有几个元素后在此基础上进行添加
// 后遍历所有学生信息
//要求3:通过id删除学生信息,1.首先判断是否为新数组,还是老数组(在添加元素时,便可以判断是否为新老数组)
//2.如果存在,则删除,如果不存在,则提示删除失败
//要求4:删除完毕后,遍历所有学生信息。
//要求5:查询数组id为123的学生,如果存在,则将他的年龄+1岁。
public class Atest {
public static void main(String[] arg){
A[] arr=new A[3];
A a1=new A(1,"张三",18);
A a2=new A(2,"李四",19);
A a3=new A(3,"王五",20);
arr[0]=a1;
arr[1]=a2;
arr[2]=a3;
// A a4=new A("4","刘家树",21);
Scanner s=new Scanner(System.in);
System.out.println("请输入要添加的id,姓名,年龄");
int i=s.nextInt();
String n=s.next();
int g=s.nextInt();
A a4=new A(i,n,g);
boolean flag=xuehao(arr,a4.getID());
//添加元素
if(flag)
{
System.out.println("该学号已经存在");
}
else{
int count=getcount(arr);
if(count==arr.length)
{
//已存满,则要新建一个数组,新数组长度加一,并把老数组的值给新数组
A[] newarr=getnewarr(arr);
newarr[count]=a4;
//遍历新数组
System.out.println("此为新数组");
getprintf(newarr);
}
else
{
//没存满,则直接添加数组
arr[count]=a4; // count是已经存过的个数,也是数组下个添加的位置
//
//遍历老数组
getprintf(arr);
}
}
//删除元素
int count=getcount(arr);
if(count==arr.length)
{
//已存满,则要新建一个数组,新数组长度加一,并把老数组的值给新数组
A[] newarr=getnewarr(arr);
newarr[count]=a4;
System.out.println("使用的新数组");
System.out.println("请输入要删除的id号");
int e=s.nextInt();
delete(newarr,e);
System.out.println("删除之后");
getprintf(newarr);
System.out.println("请选择要加一岁的id");
int z=s.nextInt();
look(newarr,z);
System.out.println("加一之后");
getprintf(newarr);
}
else if (count< arr.length)
{
delete(arr,2);
System.out.println("删除之后");
getprintf(arr);
}
//查询函数
}
//查询函数
public static void look(A[] arr,int id) {
for (int i = 0; i < arr.length; i++) {
A stu = arr[i];
if (stu != null) {
int sid = stu.getID();
if (sid == id) {
stu=arr[i];
int newage= stu.getAge()+1;
stu.setAge(newage); //更改数据元素*******************************
}
}
}
}
//删除函数
public static void delete(A[] arr,int id) {
for (int i = 0; i < arr.length; i++) {
A stu = arr[i];
if (stu != null) {
int sid = stu.getID();
if (sid == id) {
arr[i]=null;
}
}
}
}
//遍历函数
public static void getprintf(A[] arr)
{
for(int i=0;i<arr.length;i++) {
A stu = arr[i];
if (stu != null) {
System.out.println(stu.getID() + " " + stu.getName() + " " + stu.getAge());//遍历函数
}
}
}
//若已经存满,则构建一个新数组
public static A[] getnewarr(A[] arr)
{
A[] newarr=new A[arr.length+1];
for(int i=0;i<arr.length;i++)
{
newarr[i]=arr[i];
}
return newarr;
}
//判断数组是否存满,且存了几个
public static int getcount(A[] arr){
int count=0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]!=null)
{
count++;
}
}
return count;
}
//判断学号是否一样*****************************************************8
public static boolean xuehao(A[] arr,int b)
{
for(int i=0;i<arr.length;i++)
{
A stu=arr[i];
if(stu!=null) {
int sid = stu.getID();
if (sid == b) {
return true; //当return之后,后面的语句不再执行
}
}
}
return false;
}
}
写给自己的笔记。。