我做了一些谷歌搜索,并没有找到我想要的东西。我有一个用户输入值的应用程序,按下计算它将生成64个值。我的问题是两部分。
提前感谢大家的帮助。
答案 0 :(得分:1)
你应该使用arraylist。它的优点是可以排序。默认情况下,数值从低到高排序。因此,只需使用列表的最后一个元素进行计算。但是由你决定如何将64个预先计算的值加入到这个arraylist中。我建议在每次计算后立即缓冲它。
import java.util.*;
public class Test {
public static void main(String[] args) {
ArrayList<Double> list = new ArrayList<Double>();
for (int i = 0; i < 64; ++i) {
//i assume that you use doubles
list.add(new Double(Math.random()*100));
}
Collections.sort(list);
System.out.println("highest value: " + list.get(63));
}
}
答案 1 :(得分:0)
好吧,首先你需要创建一个数组并用结果填充它:
Double[] results = new Double[64];// (64 is the length of the array, the number of results)
我不知道你是如何获得结果的,但我想你将每个结果存储在一个临时变量中(double_result):
for(int i = 0; i < 64; i++){
results[i] = double_result;
}
选择最大值:
// Create a var with contains the biggest value
double max_value = 0;
// Compare all the values in the array with max_value, if its bigger store the new max value in max_malue
for(int i = 0; i < results.length; i++){
if(results[i] > max_value){
max_value = results[i];
}
}
// Now in *max_value* you got the biggest value of the 64 results
答案 2 :(得分:0)
在聊天中你写道:
这是3个等式。我需要将Oytput_0,Output_1,Output_2添加到数组中,然后获取最高值并将其分配给double,以便我可以在等式中使用它。
Output_0 = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_0 * Cvalue_0) - (Avalue_0 * Avalue_0) ); Output_1 = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_1 * Cvalue_1) - (Avalue_1 * Avalue_1) ); Output_2 = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_2 * Cvalue_2) - (Avalue_2 * Avalue_2) );
好的,尝试这样的事情:
Double[] outputs = new Double[3];
outputs[0] = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_0 * Cvalue_0) - (Avalue_0 * Avalue_0) );
outputs[1] = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_1 * Cvalue_1) - (Avalue_1 * Avalue_1) );
outputs[2] = temp1 + (temp2 / 2) - Math.sqrt( (Cvalue_2 * Cvalue_2) - (Avalue_2 * Avalue_2) );
Arrays.sort(outputs);
// Now outputs[2] will have the highest value. Use it however you please.
一个注意事项,我希望这三个方程不是三个 64 几乎相同的手写方程式。因为如果您将cValue_x
存储在一个数组中而将aValue_x
存储在另一个数组中,那么您只需循环遍历一个等式:
int count = Math.min(cValues.length, aValues.length);
for(int i = 0; i < count; i++)
outputs[i] = temp1 + (temp2 / 2) - Math.sqrt( (cValues[i] * cValues[i]) - (aValues[i] * aValues[i]) );