【发布时间】:2012-10-27 18:08:59
【问题描述】:
我想在 TextView 中显示文件中所有价格的总和(例如 £18.99 £50 等),目前它只是读取/显示文件中的最后价格。
这是我当前写入文件的代码:
total.setText(total.getText());
try {
FileOutputStream fos = openFileOutput("TotalSavings", Context.MODE_PRIVATE);
fos.write(total.getText().toString().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
这是我当前用于读取文件的代码(burmat 成员建议进行一些更改):
public void savingstotalbutton(View view) {
double total = 0;
try {
BufferedReader inputReader = new BufferedReader(new InputStreamReader(
openFileInput("TotalSavings")));
String inputString;
@SuppressWarnings("unused")
StringBuffer stringBuffer = new StringBuffer();
while ((inputString = inputReader.readLine()) != null) {
if (inputString.length() > 0) {
String line = inputString.replaceAll("[^0-9.]", "");
total = total + Double.parseDouble(line);
}
}
savingstotaltext.setText(String.valueOf(total));
} catch (IOException e) {
e.printStackTrace();
}
}
感谢任何帮助。
编辑: 我手动修改了 TotalSavings.txt 的内容并添加了不同的价格并将其复制到应用程序的 /files 文件夹中。它读取所有价格并给出有效的总和,但问题是写入函数覆盖了第一行,它永远不会进入下一行。
编辑2:使用calc按钮显示计算并将结果写入文件TotalSavings.txt的整个代码
public void calc(View view) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
if (price.getText().toString().equals(""))
return;
if (disc.getText().toString().equals(""))
return;
double priceVal = Double.parseDouble(price.getText().toString());
double discVal = Double.parseDouble(disc.getText().toString());
double discount = priceVal / 100.0 * discVal;
int di = (int) (discount * 100);
double totalVal = priceVal - (di / 100.0);
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
savings.setText(nf.format(discount));
total.setText(nf.format(totalVal));
savings.setText(savings.getText());
try {
FileOutputStream fos = openFileOutput("TotalSavings", Context.MODE_PRIVATE);
fos.write(savings.getText().toString().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
-
你能告诉我你正在阅读的文件吗?
-
@Paul Harris 文件名是 TotalSavings.txt 并且它包含一行: $455.88 基本上写入函数不会转到下一行它一直重写第一行。