//在数组中取子数组
public static void main(String[] args) {
int[] arr = new int[8];
for(int i = 0; i <arr.length; i++) {
arr[i] = (int) (Math.random() * 20);
}
//遍历
for(int temp : arr) {
System.out.print(temp + " ");
}
System.out.println();
// 取子数组【最重要】:将数组中的所有奇数取出来
// 需要两个新数组,因为奇数的个数未知,这里取极端情况:原数组中全是奇数。
// 设置计数器,为第二个新数组的长度
int[] tempArr = new int[arr.length];//设置临时数组
int count = 0;
for(int i = 0; i < arr.length; i++) {
if(arr[i] % 2 != 0) {
tempArr[count++] = arr[i];
}
}
int[] finArr = new int[count];
for(int i = 0; i < count; i++) {
finArr[i] = tempArr[i];
}
for(int temp : finArr) {
System.out.print(temp + " ");
}
System.out.println();
}
//在对象数组中取子数组
public static void main(String[] args) {
Student[] stuArr = new Student[20];
String[] name1 = {"赵","钱","孙","李","周","吴","郑","王"};
String[] name2 = {"明","阳","微","男","楠","博","三","歌"};
// 遍历才可以用增强for
for(int i = 0; i < stuArr.length; i++) {
int id = i + 1;
int index1 = (int)(Math.random() * 100) % name1.length;
int index2 = (int)(Math.random() * 100) % name2.length;
String name = name1[index1] + name2[index2];
int grade = (int)(Math.random() * 100) % 6 + 1;
double score = (int)(Math.random() * 101);
stuArr[i] = new Student(id,name,grade,score);
}
// 增强for 数据类型 变量名 : 数组名
for(Student temp : stuArr) {
System.out.println(temp.say());
}
System.out.println("所有五年级学生如下所示:");
// 取子数组【最重要】,将所有五年级同学找出来
Student[] tempStuArr = new Student[stuArr.length];//设置临时数组,假设全为五年级同学
int count = 0;
// 将五年级学生存入临时数组
for(int i = 0; i < stuArr.length; i++) {
if(stuArr[i].getGrade() == 5) {
tempStuArr[count++] = stuArr[i];
}
}
// 创建最终数组,长度为count
Student[] finStuArr = new Student[count];
// 将数据导入最终数组
for(int i = 0; i < count; i++) {
finStuArr[i] = tempStuArr[i];
}
// 遍历最终数组
for(Student temp : finStuArr) {
System.out.println(temp.say());
}
System.out.println("我要看看最初数组有没有被破坏");
for(Student temp : stuArr) {
System.out.println(temp.say());
}
}