创建动态数组,然后选择最高值

时间:2013-03-03 16:57:46

标签: java android

我做了一些谷歌搜索,并没有找到我想要的东西。我有一个用户输入值的应用程序,按下计算它将生成64个值。我的问题是两部分。

  1. 如何捕获这些结果并创建临时数组
  2. 如何从数组中选择最大值并将其指定为double,以便在应用程序的最终等式中使用。
  3. 提前感谢大家的帮助。

3 个答案:

答案 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]) );