关于java编程的两个题目

虽然我知道这两个题目很简单,贴出来可能招来一片骂声,但是我想说下原因。我这个人对代码很苛刻,同时也很喜欢和别人交流一下编程的经验,最近刚学java,有两个程序设计的题目,当然自己可以写出来,但我想看看如果这两个题目给大家,大家会怎么写,不同的人有不同的方法,从中可以学到很多的东西,不知道大家有没有这个体会。不喜勿拍。

(1)编写一个应用程序,对程序中给定的四个double型数据求其最大值和最小值。
(2)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1、2、3,而6=1+2+3。因此6是“完数”。编写一个小应用程序求1000之内的所有完数。
注意哦,第二个题目要求写个小应用程序。

[quote]我感觉这个方法不好,两两比较太麻烦了,能不能把输入的n个数全放进一个double数组里,在循环比较大小? [/quote]

比较次数最少了,只要3次。额外需要的空间就是2,如果把输入的n个数全放进一个double数组里还有多需要空间。应该这个方法还好了

[code="java"] public static double[] getMinAndMax(double a1, double a2, double a3, double a4) {
double[] ret = new double[2];
if (a1 < a2) {
ret[0] = a1;
ret[1] = a2;
} else {
ret[0] = a2;
ret[1] = a1;
}
if (a3 < ret[0])
ret[0] = a3;
else if (a3 > ret[1])
ret[1] = a3;
if (a4 < ret[0])
ret[0] = a4;
else if (a4 > ret[1])
ret[1] = a4;
return ret;
}[/code]

[code="java"]
double min=a1 double max=a1>a2?(a1>a3?(a1>a4?a1:a4):(a3>a4?a3:a4)):(a2>a3?(a2>a4?a2:a4):(a3>a4?a3:a4));
[/code]
这个写法 :D

两两比较得到两个值的最大和最小,再比较得到最大和最小。比较四次