当前位置: 代码迷 >> J2SE >> 新手问一个关于数组的有关问题,多谢大家捧场
  详细解决方案

新手问一个关于数组的有关问题,多谢大家捧场

热度:4705   发布时间:2013-02-25 00:00:00.0
新手问一个关于数组的问题,谢谢大家捧场

public class shuzutwo3 {
int grades[][]={
{37,78,96,43},
{26,17,99,11},
{40,90,86,81}
};
public static void main(String args[]){
shuzutwo3 m=new shuzutwo3();
System.out.println("最小的数:"+m.minimum());
System.out.println("最大的数:"+m.maximum());
}
public int minimum(){
int lowGrade=grades[0][0];
for(int row=0;row<grades.length;row++){
for(int column=0;column<grades [row].length;column++){
if(grades[row][column]<lowGrade)
lowGrade=grades[row][column];
}
}
return lowGrade;
}
public int maximum(){
int highGrade=grades[0][0];
for(int row=0;row<grades.length;row++){
for(int column=0;column<grades [row].length;column++){
if(grades[row][column]>highGrade)
highGrade=grades[row][column];
}
}
return highGrade;
}

}
这里面的highGrade=grades[0][0]是不是指的37
然后后面的return LowGrade和highGrade返回的值分别是是比37小的和比37大的值吗?
最后这一步:System.out.println("最小的数:"+m.minimum());
  System.out.println("最大的数:"+m.maximum());
是怎么得来的啊?
  希望能够得到大家的指点,谢谢!!

------解决方案--------------------------------------------------------
grades[0][0]=37是对的,
mininum和maxinum是返回最小的和最大的数值,
这是通过比较得出的结果。
对于返回最小值的比较的原理是这样的,首先是,假设grades[0][0]=37是最小的,然后通过循环来比较,如果碰到比它更小的就把更小的那个值赋给它(lowGrade)

对于最大值的原理也是一样的。
------解决方案--------------------------------------------------------
grades[0][0]=37。
你那个程序就是通过两层for循环,依次对比每个数,并分别把最小数和最大数用个变量存储起来作为返回值。

Java code
// 可以不用那么麻烦,下面是我想的,当然肯定还有更简单的方法。Integer grades[][] = { { 37, 78, 96, 43 }, { 26, 17, 99, 11 },                { 40, 90, 86, 81 } };         List<Integer[]> a =  Arrays.asList(grades); //将二维数组转化为集合         List<Integer> b = new ArrayList<Integer>();         for(Integer[] x:a){             for(Integer y:x){                 b.add(y);  // 将全部数字放一个集合中             }         }        System.out.println(Collections.max(b)); //使用jdk提供的工具方法来求最大,最小值。        System.out.println(Collections.min(b));
  相关解决方案