0

次のコードがあります。

for(int i = 1; i <= doubleLength; i++) {
    doubleRate = (doubleBalance * (doubleRate/100))/12;
    doubleBalance = doubleBalance + doubleRate;
    doublePayment = (doubleBalance/doubleCount);

    TextView results = (TextView) findViewById(R.id.showResult);
    results.setText(doublePayment+"");

    doubleCount = doubleCount - 1;
    doubleBalance -= doublePayment;
}

私がやろうとしているのは、「doublePayment」値のすべての値を画面上の TextView UI オブジェクトに出力することです。ただし、for ループが終了すると、複数ではなく 1 つの値のみが出力されます。

私はこれを C++ から移植しているので、単純coutに端末に出力することに慣れています。

4

4 に答える 4

1

問題はここにあります:

results.setText(doublePayment+"");

文字列全体を追加するのではなく、テキスト値を再設定しています。より良いアプローチは、次を使用することStringBuilderです。

StringBuilder sb = new StringBuilder();
for(int i = 1; i <= doubleLength; i++) {
    doubleRate = (doubleBalance * (doubleRate/100))/12;
    doubleBalance = doubleBalance + doubleRate;
    doublePayment = (doubleBalance/doubleCount);

    sb.append(doublePayment);
    sb.append(" ");

    doubleCount = doubleCount - 1;
    doubleBalance -= doublePayment;
}
TextView results = (TextView) findViewById(R.id.showResult);
results.setText(sb.toString());
于 2013-05-30T03:55:40.617 に答える
0

Raghunandan が示唆しているように、ループ内で textview を初期化する必要はありません。動く

TextView results = (TextView) findViewById(R.id.showResult);  

ループの外。

setText の代わりに append を使用します

results.append(doublePayment+"\n");
于 2013-05-30T03:54:23.927 に答える
0

これを試して

 results.setText(results.getText().toString() +  ", " +doublePayment);

パフォーマンスを向上させるには、StringBuilder.

String res = new StringBuilder(results.getText().toString())
    .append(", ")
    .append(doublePayment)
    .toString();

results.setText(res);
于 2013-05-30T03:55:31.813 に答える
0

最初に (StringBuilder などで) テキストを作成してから、ループの外で setText を実行する必要があります。

または、次のことができます

results.setText(results.getText().toString() + System.getProperty("line.separator") + doublePayment);

ループの外に置きたくない場合。

于 2013-05-30T03:55:43.413 に答える