我从五个不同的函数中获取五个double数据类型值。没有将这些值添加到数组中,有任何有效的java代码可以从这五个值集中获取最大值。
double d1=r1.function1();
double d2=r1.function2();
double d3=r1.function3();
double d4=r1.function4();
double d5=r1.function5();
double[] d=new double[5];
for(int i=0:i<5;i++){
d[i]="d"+i;
}
double x=max(d);
public static double max(double[] t) {
double maximum = t[0]; // start with the first value
for (int i=1; i<t.length; i++) {
if (t[i] > maximum) {
maximum = t[i]; // new maximum
}
}
return maximum;
}
如果没有这么多努力,有没有有效的方法从上面的双重类型数据集中获取最大值?而且当向循环添加值时,d[i]="d"+i;
部分中也会出现一些错误。请为我提供更好的解决方案。
答案 0 :(得分:3)
您可以使用ArrayList<Double>
而不是
ArrayList<Double> alist=new ArrayList<Double>();
//Add double values to this list
您可以使用Collections.max(alist)
获取最大值,Collections.min(alist)
获取最小值。
答案 1 :(得分:1)
您可以使用varargs而不是数组。
public double max(double... values) {
int max = -Double.MAX_VALUE;
for(double value : values) {
if(value > max) {
max = value;
}
}
return max;
}
然后您将方法称为double max = max(d1, d2, d3, d4, d5);
编辑:
你的行
for(int i=0:i<5;i++){
d[i]="d"+i;
}
不能正常工作,因为"d"+i
会因字符串连接而创建String
,并且不会是具有该名称的double
变量。
你无法像这样填充你的数组。
你必须这样做:
d[0] = d1;
d[1] = d2;
d[2] = d3;
d[3] = d4;
d[4] = d5;
答案 2 :(得分:1)
Collections.max(Arrays.asList(d));
如果不是将d作为数组而更有效。把它作为列表开始。
答案 3 :(得分:0)
你不必自己把它们放在数组中,让Java使用varargs完成这部分工作:
public static double max(Double... numbers){
double max = numbers[0];
for(int i = 0; i < numbers.length; i++){
if(numbers[i] > max){
max = numbers[i];
}
}
return max;
}
答案 4 :(得分:0)
您可以将d1,d2,d3,d4,d5
添加到TreeSet
Set<Double> set=new TreeSet<>(); // while you adding set will be sorted
// add values to set
List<Double> setAsList=new ArrayList(set); // convert set to list
System.out.println(setAsList.get(setAsList.size()-1)); // last value is the max
答案 5 :(得分:0)
List <Double> d = new ArrayList<>();
d. add (d1);
d. add (d2);
d. add (d3);
d. add (d4);
d. add (d5);
Double max=Collections. max (d);
答案 6 :(得分:0)
在Java 8中,
java.util.Arrays.parallelSort(d).get(d.size-1)
获取(merge sorted)数组中的最大值。
答案 7 :(得分:0)
在Java 8中:
Arrays.stream(darray).max().getAsDouble()
完整方法(在我们的例子中,如果数组为空则返回零;根据需要更改默认值)。
public static double max(final @Nullable double... values)
{
return ((values != null) && (values.length > 0)) ? Arrays.stream(values).max().getAsDouble() : 0;
}
可以使用数组或varargs参数调用此方法:
double[] darray = new double[]{43.7, 65.2, 99.1, 87.6};
double max1 = max(darray);
double max2 = max(1.2, 3.4, 5.6);