我做了一些Google搜索,並沒有找到我正在尋找的東西。我有一個用戶輸入值的應用程序,當按下計算它會產生64個值。我的問題是2部分。創建一個動態數組,然後選擇最高值
- 怎麼辦我捕捉到這些結果,並創建一個臨時數組
- 我如何從陣列中挑選最大的值,並將其分配給雙在應用程序的最終方程式來使用。
非常感謝大家的幫助。
我做了一些Google搜索,並沒有找到我正在尋找的東西。我有一個用戶輸入值的應用程序,當按下計算它會產生64個值。我的問題是2部分。創建一個動態數組,然後選擇最高值
非常感謝大家的幫助。
在對話中你寫道:
這裏有3個等式。我需要將Oytput_0,Output_1,Output_2添加到數組中,然後獲取最高的值並將其分配給一個雙精度值,以便我可以在方程中使用它。
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.
一個說明,我希望這三個等式不是幾乎相同,手寫公式中的三個。因爲如果你存儲cValue_x
S IN一個陣列和aValue_x
S IN另一個,那麼你可以通過一個方程簡單循環:
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]));
Cvalues是另一個完全大的等式。我必須做一個分解,因爲這個方程是相當廣泛的。我會試試看看我得到了什麼,並讓你知道。謝謝。 – 2013-03-03 18:05:40
這對我工作謝謝 – 2013-03-04 21:51:23
哦,首先你需要創建一個數組,並用結果填充:
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
你應該使用ArrayList。它具有可排序的優點。默認情況下,數值從低到高排序。所以只需使用列表的最後一個元素進行計算。但是,如何將64個預先計算的值存入這個數組列表就取決於你。我建議在每次計算之後進行緩衝。
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));
}
}
我的問題是從一開始就是正確的...編程新手我還沒有找到如何將輸出結果添加到數組中。 – 2013-03-03 17:03:42
你有寫過什麼來閱讀用戶輸入嗎? (請點擊「[編輯]」在您的問題中發佈您的代碼。) – Sam 2013-03-03 17:05:53
是的,我有讀取用戶輸入的代碼....該應用根據用戶輸入生成64個結果。這部分工作很好。我只需要捕獲64個答案,並從他們創建一個數組,以找到最大的結果。我需要在最終的方程中使用這個結果。 – 2013-03-03 17:11:08