私はグーグルをしましたが、探していたものがまったく見つかりませんでした。ユーザーが値を入力し、計算を押すと64個の値が生成されるアプリがあります。私の質問は2つの部分です。
- これらの結果をキャプチャして一時配列を作成するにはどうすればよいですか
- 配列から最大値を選択し、それをdoubleに割り当てて、アプリの最終的な方程式で使用するにはどうすればよいですか。
よろしくお願いします。
配列リストを使用する必要があります。ソート可能であるという利点があります。デフォルトでは、数値は低いものから高いものへとソートされます。したがって、計算にはリストの最後の要素を使用してください。ただし、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));
}
}
まず、配列を作成して結果を入力する必要があります。
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
チャットで次のように書きました。
ここに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.
これらの 3 つの方程式が、 64 個のほぼ同一の手書きの方程式のうちの 3 つでないことを願っています。cValue_x
ある配列に sを格納し、別の配列に s を格納すると、 1 つの方程式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]) );