日期:2014-05-20  浏览次数:20636 次

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类型的对象。

其实就是数组,每一个元素不是基本数据类型的,而是对象。很好理解。