2013-03-03 40 views
-6

我做了一些Google搜索,並沒有找到我正在尋找的東西。我有一個用戶輸入值的應用程序,當按下計算它會產生64個值。我的問題是2部分。創建一個動態數組,然後選擇最高值

  1. 怎麼辦我捕捉到這些結果,並創建一個臨時數組
  2. 我如何從陣列中挑選最大的值,並將其分配給雙在應用程序的最終方程式來使用。

非常感謝大家的幫助。

+0

我的問題是從一開始就是正確的...編程新手我還沒有找到如何將輸出結果添加到數組中。 – 2013-03-03 17:03:42

+0

你有寫過什麼來閱讀用戶輸入嗎? (請點擊「[編輯]」在您的問題中發佈您的代碼。) – Sam 2013-03-03 17:05:53

+0

是的,我有讀取用戶輸入的代碼....該應用根據用戶輸入生成64個結果。這部分工作很好。我只需要捕獲64個答案,並從他們創建一個數組,以找到最大的結果。我需要在最終的方程中使用這個結果。 – 2013-03-03 17:11:08

回答

0

在對話中你寫道:

這裏有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])); 
+0

Cvalues是另一個完全大的等式。我必須做一個分解,因爲這個方程是相當廣泛的。我會試試看看我得到了什麼,並讓你知道。謝謝。 – 2013-03-03 18:05:40

+0

這對我工作謝謝 – 2013-03-04 21:51:23

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 
1

你應該使用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)); 
} 
} 
相關問題