java中对象数组类型的参数
1:第1个类:package com.example;
public class Three1 {
	//定义身高属性:
	public	float height=0f;
}
2:第2个类:package com.example;
public class Three2 {
	public float height(Three1 [] stu){
		float avgHeight=0f;
		float all=0f;
		int count=0;
		for (int i = 0; i < stu.length; i++) {
			if (stu[i].height !=0) {
				all=all+stu[i].height;
				count++;
			}
		}
		avgHeight=all/count;
		return avgHeight;
	}
}
第3个测试类:import java.util.Scanner;
import com.example.Three1;
import com.example.Three2;
public class ThreeTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义包含5个元素的学生对象数组:
		Three1 [] arr1=new Three1[5];
		Three2 duixiang=new Three2();
		Scanner input=new Scanner(System.in);
		for (int i = 0; i < arr1.length; i++) {
			System.out.println("请输入第"+(i+1)+"名学生的身高:");
			arr1[i]=new Three1();//实例化
			arr1[i].height=input.nextFloat();			
		}
		//调用方法:
		float avg=duixiang.height(arr1);
		System.out.println(avg);
	}
}
请教各位大侠:第2个类中:stu[i].height 是什么意思,怎么解释?2:测试类中:arr1[i]=new Three1(); 是什么意思,怎么解释?求详细的解答理论!
------解决方案--------------------看了你的代码,很简单啊。
就整个代码的意思就是求平均身高。
Three1 类表示身高的一个类,只保存身高这个数据。
Three2-->public float height(Three1 [] stu){}
这个方法其实就是计算平均身高,参数stu表示所有人的身高,用数组保存。
第一个问题:stu[i].height 当然就代表其中某个人的身高。
所以
if (stu[i].height !=0) {
all=all+stu[i].height;
count++;
}
就是计算身高总和,后面再除以人数,得到平均身高。
第二问;
arr1[i]=new Three1();//实例化
arr1[i].height=input.nextFloat();
就表示实例化身高这个类,并从input出读入具体身高的数组,保存到身高类中(Three1)
------解决方案--------------------其实你这个问题,在csdn里混的人所有人都能解答,估计是csdn里最简单的问题了。属性非常非常初学者的问题。
------解决方案--------------------
1、
Three1 [] stu。stu 是一个数组,里面元素是Three1类型的,即里面放的是对象
stu[i]就是取这个数组的第i个元素,即第i个Three1类型的对象,
stu[i].height 就是取第i个Three1对象的height属性
2、
因为Three1 [] arr1=new Three1[5];创建了容量为5的数组,但里面是空的,并没有元素。
arr1[i]=new Three1();就是给每个元素赋值。每一个元素放一个Three1类型的对象。
其实就是数组,每一个元素不是基本数据类型的,而是对象。很好理解。