if ,else if 代表二选1;否则都执行

package com.fqs.demo1;

 

import java.util.Scanner;

 

public class StudentTest {

public static void main(String[] args) {

// 1.定义一个数组arr 存放4个学生信息

Student[] arr = new Student[4];

 

// 2.给4个数组赋初值

Student s0 = new Student("stu000", "s0", 18);

Student s1 = new Student("stu001", "s1", 19);

Student s2 = new Student("stu002", "s2", 20);

Student s3 = new Student();

arr[0] = s0;

arr[1] = s1;

arr[2] = s2;

arr[3] = s3;

 

// 3.从键盘获取第4个学生的信息

Scanner sc = new Scanner(System.in);

// 请输入学生id

System.out.println("请输入学生id");

String scid = sc.next();

// 4.判断第4个学生的id是否唯一

boolean flag = true;

flag = isFind(arr, scid);

while (flag == true) {

// 如果有重复的,再次输入

// 请输入学生id

System.out.println("请再次输入学生id");

scid = sc.next();

flag = isFind(arr, scid);

// 没有重复的则 跳出循环

if (flag == false) {

break;

}

}

if (flag == false) {

//初始化等于空的次数为0 才能在外面打印

int count=0;

//新的数组arr2的长度大于arr,多一个长度

Student []arr2=new Student[arr.length+1];

 

//如果有3个不等于null,说明剩余1个空,说明有空位,直接填写

if(getCount(arr)<arr.length) {

System.out.println("将scid赋值给arr[3]");

arr[getCount(arr)].setId(scid);

}

//如果次数等于4说明已经满了,需要新的数组

else if(getCount(arr)==arr.length) {

 

 

//赋值arr内的元素到arr2

arr2=arr;

System.out.println("数组已满,将scid赋值给arr[4]");

arr2[count].setId(scid);

 

//6.打印arr2数组内全部的值

for (int i = 0; i < arr2.length; i++) {

Student s = arr2[i];

System.out.println(s.getId() + " " + s.getName() + " " + s.getAge());

}

}

 

}

// 5.打印arr数组内全部的值

for (int i = 0; i < arr.length; i++) {

Student s = arr[i];

System.out.println(s.getId() + " " + s.getName() + " " + s.getAge());

}

 

 

 

 

}// 结束main方法

// 1.我要干什么 获取这个scid是否在数组内已存在isFind 存在true 不存在 false

// 2.我需要根据什么来判断 输入arr scid

// 3.我需要获得什么 return true;return false

 

public static boolean isFind(Student[] arr, String scid) {

// 如果找到,返回真

for (int i = 0; i < arr.length; i++) {

if (arr[i].getId() != null && arr[i].getId().equals(scid)) {

return true;

}

 

} // 结束for循环

return false;

}// 结束isFind方法

 

// 1.我要干什么 获取数组满了吗 数组内的元素==空 说明不满 计数一次

// 2.我需要根据什么来判断 传入数组

// 3.我需要获得什么 计数=0说明满了 不等于0 说明没有满

//不满的次数count

 

public static int getCount(Student[]arr) {

int count=0;

for(int i=0;i<arr.length;i++) {

if (arr[i].getId()!=null) {

count++;

}

 

}//结束for循环

System.out.println("count:"+count);

return count;

 

 

}//结束getCount方法

 

 

 

 

 

}

 

posted @ 2023-03-15 23:33  胖豆芽  阅读(37)  评论(0编辑  收藏  举报