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 循环结束时,它只打印出一个值,而不是几个。

我是从 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 使用追加

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 回答