整数の配列リストがあります。ボタンをクリックすると、テキスト フィールドのデータが変換され、配列リストに int として追加されます。以下はそのための私のコードです
public void onClick(View v) {
// TODO Auto-generated method stub
String rate = happy.getText().toString();
int rating = Integer.valueOf(rate);
counter += 1;
if (counter == 10) {
train();
}
if (rating > 0 && rating < 11) {
happyRating.add(rating);
test = happyRating.get(0);
Log.d("Value: ", Integer.toString(test));
} else {
InputAlertHandler.post(new Runnable() {
public void run() {
int duration = Toast.LENGTH_LONG;
CharSequence text = "Please enter Happiness Indicator between 1 and 10";
Context context = getApplicationContext();
inputAlert = Toast
.makeText(context, text, duration);
inputAlert.show();
}
});
}
}
関数 train(); で この配列リストからデータを取得し、計算に使用しています。
public void train() {
for (int i = 2; i < 12; i++) {
if (happyRating.get(i - 1) < happyRating.size()){
int x, x1, x2, y, y1, y2;
double learningRate = -0.00002;
x1 = happyRating.get(i - 1);
x2 = happyRating.get(i - 2);
y1 = iteration[i - 1];
y2 = iteration[i - 2];
x = x2 - x1;
y = y2 - y1;
if (x == 0) {
slope = 0;
} else {
slope = (y2 - y1) / (x2 - x1);
}
j++;
Log.d("J: ", Integer.toString(j));
double weightAdj = happyRating.get(j) * slope * learningRate;
weighting = (weighting + weightAdj);
Log.d("WEIGHTING: ", Double.toString(weighting));// break;
}
else
{
break;
}
}
計算に勾配を使用しているため、前の 2 つの点の勾配を取得しているため、for ループで int i = 2 を設定しています。
Index out of bounds 例外が発生しないようにチェックを入れました。私の問題は、J も WEIGHTING も logcat に表示されないことです。これは、それらが計算されていないことを意味するのか、それとも私にはわかりませんが、2つのグローバルとして初期化されているため、少なくともその値が出力されるはずですか? できるだけ早くこれを理解する必要があるので、これに光を当てることができる誰かがそこにいるなら、それは簡単なことだと確信していますが、私はこのプロジェクトを長い間見ていて目が痛い!!!
ありがとう!