当前位置:   article > 正文

复杂的对象数组操作Java_义一个数组,用于存储3个学生对象。学生类的属性为:姓名,性别,年龄。(使用java

义一个数组,用于存储3个学生对象。学生类的属性为:姓名,性别,年龄。(使用java

需求:

定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。

学生的属性:学号,姓名,年龄。

要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。

要求2:添加完毕之后,遍历所有学生信息。

要求3:通过id删除学生信息

​ 如果存在,则删除,如果不存在,则提示删除失败。

要求4:删除完毕之后,遍历所有学生信息。

要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁

代码示例:

  1. public class Student {
  2. private int id;
  3. private String name;
  4. private int age;
  5. public Student() {
  6. }
  7. public Student(int id, String name, int age) {
  8. this.id = id;
  9. this.name = name;
  10. this.age = age;
  11. }
  12. public int getId() {
  13. return id;
  14. }
  15. public void setId(int id) {
  16. this.id = id;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public int getAge() {
  25. return age;
  26. }
  27. public void setAge(int age) {
  28. this.age = age;
  29. }
  30. }
  1. /*
  2. 定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
  3. 学生的属性:学号,姓名,年龄。
  4. 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
  5. 要求2:添加完毕之后,遍历所有学生信息。
  6. */
  7. public class Test {
  8. public static void main(String[] args) {
  9. //1.创建一个数组用来存储学生对象
  10. Student[] arr = new Student[3];
  11. //2.创建学生对象并添加到数组当中
  12. Student stu1 = new Student(1, "zhangsan", 23);
  13. Student stu2 = new Student(2, "lisi", 24);
  14. //3.把学生对象添加到数组当中
  15. arr[0] = stu1;
  16. arr[1] = stu2;
  17. //要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
  18. Student stu4 = new Student(3, "zhaoliu", 26);
  19. //唯一性判断
  20. //已存在 --- 不用添加
  21. //不存在 --- 就可以把学生对象添加进数组
  22. boolean flag = contains(arr, stu4.getId());
  23. if(flag){
  24. //已存在 --- 不用添加
  25. System.out.println("当前id重复,请修改id后再进行添加");
  26. }else{
  27. //不存在 --- 就可以把学生对象添加进数组
  28. //把stu4添加到数组当中
  29. //1.数组已经存满 --- 只能创建一个新的数组,新数组的长度 = 老数组 + 1
  30. //2.数组没有存满 --- 直接添加
  31. int count = getCount(arr);
  32. if(count == arr.length){
  33. //已经存满
  34. //创建一个新的数组,长度 = 老数组的长度 + 1
  35. //然后把老数组的元素,拷贝到新数组当中
  36. Student[] newArr = creatNewArr(arr);
  37. //把stu4添加进去
  38. newArr[count] = stu4;
  39. //要求2:添加完毕之后,遍历所有学生信息。
  40. printArr(newArr);
  41. }else{
  42. //没有存满
  43. //[stu1,stu2,null]
  44. //getCount获取到的是2,表示数组当中已经有了2个元素
  45. //还有一层意思:如果下一次要添加数据,就是添加到2索引的位置
  46. arr[count] = stu4;
  47. //要求2:添加完毕之后,遍历所有学生信息。
  48. printArr(arr);
  49. }
  50. }
  51. }
  52. public static void printArr(Student[] arr){
  53. for (int i = 0; i < arr.length; i++) {
  54. Student stu = arr[i];
  55. if(stu != null){
  56. System.out.println(stu.getId() + ", " + stu.getName() + ", " + stu.getAge());
  57. }
  58. }
  59. }
  60. //创建一个新的数组,长度 = 老数组的长度 + 1
  61. //然后把老数组的元素,拷贝到新数组当中
  62. public static Student[] creatNewArr(Student[] arr){
  63. Student[] newArr = new Student[arr.length + 1];
  64. //循环遍历得到老数组中的每一个元素
  65. for (int i = 0; i < arr.length; i++) {
  66. //把老数组中的元素添加到新数组当中
  67. newArr[i] = arr[i];
  68. }
  69. //把新数组返回
  70. return newArr;
  71. }
  72. //定义一个方法判断数组中已经存了几个元素
  73. public static int getCount(Student[] arr){
  74. //定义一个计数器用来统计
  75. int count = 0;
  76. for (int i = 0; i < arr.length; i++) {
  77. if(arr[i] != null){
  78. count++;
  79. }
  80. }
  81. //当循环结束之后,我就知道了数组中一共有几个元素
  82. return count;
  83. }
  84. //1.我要干嘛? 唯一性判断
  85. //2.我干这件事情,需要什么才能完成? 数组 id
  86. //3.调用处是否需要继续使用方法的结果? 必须返回
  87. public static boolean contains(Student[] arr, int id) {
  88. for (int i = 0; i < arr.length; i++) {
  89. //依次获取到数组里面的每一个学生对象
  90. Student stu = arr[i];
  91. if(stu != null){
  92. //获取数组中学生对象的id
  93. int sid = stu.getId();
  94. //比较
  95. if(sid == id){
  96. return true;
  97. }
  98. }
  99. }
  100. //当循环结束之后,还没有找到一样的,那么就表示数组中要查找的id是不存在的。
  101. return false;
  102. }
  103. }
  1. /*
  2. 定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
  3. 学生的属性:学号,姓名,年龄。
  4. 要求3:通过id删除学生信息
  5. 如果存在,则删除,如果不存在,则提示删除失败。
  6. 要求4:删除完毕之后,遍历所有学生信息。
  7. */
  8. public class Test3 {
  9. public static void main(String[] args) {
  10. //1.创建一个数组用来存储学生对象
  11. Student[] arr = new Student[3];
  12. //2.创建学生对象并添加到数组当中
  13. Student stu1 = new Student(1, "zhangsan", 23);
  14. Student stu2 = new Student(2, "lisi", 24);
  15. Student stu3 = new Student(3, "wangwu", 25);
  16. //3.把学生对象添加到数组当中
  17. arr[0] = stu1;
  18. arr[1] = stu2;
  19. arr[2] = stu3;
  20. /*要求3:通过id删除学生信息
  21. 如果存在,则删除,如果不存在,则提示删除失败。*/
  22. //要找到id在数组中对应的索引
  23. int index = getIndex(arr, 2);
  24. if (index >= 0) {
  25. //如果存在,则删除
  26. arr[index] = null;
  27. //遍历数组
  28. printArr(arr);
  29. } else {
  30. //如果不存在,则提示删除失败
  31. System.out.println("当前id不存在,删除失败");
  32. }
  33. }
  34. //1.我要干嘛? 找到id在数组中的索引
  35. //2.我需要什么? 数组 id
  36. //3.调用处是否需要继续使用方法的结果? 要
  37. public static int getIndex(Student[] arr, int id) {
  38. for (int i = 0; i < arr.length; i++) {
  39. //依次得到每一个学生对象
  40. Student stu = arr[i];
  41. //对stu进行一个非空判断
  42. if (stu != null) {
  43. int sid = stu.getId();
  44. if (sid == id) {
  45. return i;
  46. }
  47. }
  48. }
  49. //当循环结束之后,还没有找到就表示不存在
  50. return -1;
  51. }
  52. public static void printArr(Student[] arr) {
  53. for (int i = 0; i < arr.length; i++) {
  54. Student stu = arr[i];
  55. if (stu != null) {
  56. System.out.println(stu.getId() + ", " + stu.getName() + ", " + stu.getAge());
  57. }
  58. }
  59. }
  60. }
  1. /*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
  2. 学生的属性:学号,姓名,年龄。
  3. 要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁*/
  4. public class Test4 {
  5. public static void main(String[] args) {
  6. //1.创建一个数组用来存储学生对象
  7. Student[] arr = new Student[3];
  8. //2.创建学生对象并添加到数组当中
  9. Student stu1 = new Student(1, "zhangsan", 23);
  10. Student stu2 = new Student(2, "lisi", 24);
  11. Student stu3 = new Student(3, "wangwu", 25);
  12. //3.把学生对象添加到数组当中
  13. arr[0] = stu1;
  14. arr[1] = stu2;
  15. arr[2] = stu3;
  16. //4.先要找到id为2的学生对于的索引
  17. int index = getIndex(arr, 2);
  18. //5.判断索引
  19. if(index >= 0){
  20. //存在, 则将他的年龄+1岁
  21. Student stu = arr[index];
  22. //把原来的年龄拿出来
  23. int newAge = stu.getAge() + 1;
  24. //把+1之后的年龄塞回去
  25. stu.setAge(newAge);
  26. //遍历数组
  27. printArr(arr);
  28. }else{
  29. //不存在,则直接提示
  30. System.out.println("当前id不存在,修改失败");
  31. }
  32. }
  33. //1.我要干嘛? 找到id在数组中的索引
  34. //2.我需要什么? 数组 id
  35. //3.调用处是否需要继续使用方法的结果? 要
  36. public static int getIndex(Student[] arr , int id){
  37. for (int i = 0; i < arr.length; i++) {
  38. //依次得到每一个学生对象
  39. Student stu = arr[i];
  40. //对stu进行一个非空判断
  41. if(stu != null){
  42. int sid = stu.getId();
  43. if(sid == id){
  44. return i;
  45. }
  46. }
  47. }
  48. //当循环结束之后,还没有找到就表示不存在
  49. return -1;
  50. }
  51. public static void printArr(Student[] arr){
  52. for (int i = 0; i < arr.length; i++) {
  53. Student stu = arr[i];
  54. if(stu != null){
  55. System.out.println(stu.getId() + ", " + stu.getName() + ", " + stu.getAge());
  56. }
  57. }
  58. }
  59. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/769121
推荐阅读
相关标签
  

闽ICP备14008679号