1

TextView でファイルから追加されたすべての数値の合計を表示したいのですが、現在はファイルから最後の数値を読み取る/表示するだけです。

これは、ファイルに書き込むための現在のコードです。

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();
        }

これは、ファイルから読み取るための現在のコードです。

public void savingstotalbutton(View view) {

        try {
            BufferedReader inputReader = new BufferedReader(new InputStreamReader(
                    openFileInput("TotalSavings")));
            String inputString;
            StringBuffer stringBuffer = new StringBuffer();                
            while ((inputString = inputReader.readLine()) != null) {
                stringBuffer.append(inputString + "\n");
            }
            savingstotaltext.setText(stringBuffer.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }               
    }

誰かがそれを行う方法を教えてもらえますか?

4

1 に答える 1

2

行上の唯一のものは整数であると仮定すると、このようなことはできませんか?

public void savingstotalbutton(View view) {

    int total = 0;

    try {
        BufferedReader inputReader = new BufferedReader(new InputStreamReader(
                openFileInput("TotalSavings")));
        String inputString;
        StringBuffer stringBuffer = new StringBuffer();                
        while ((inputString = inputReader.readLine()) != null) {
            //stringBuffer.append(inputString + "\n");
            total = total + Integer.parseInt(inputString);
        }
        //savingstotaltext.setText(stringBuffer.toString());
        savingstotaltext.setText(String.ValueOf(total));
    } catch (IOException e) {
        e.printStackTrace();
    }               
}

編集:コメントの質問ごとの拡張回答

小数を使用している場合は、 int totaltodouble totalInteger.parseInt()to を変更するだけです。Double.parseDouble()また、行に数字/小数よりも多くの文字がある場合は、以下を使用して、数字のみを取り除いて使用し、行にコンテンツがあることを確認してください。

if (inputString.length() > 0) {
    String line = inputString.replaceAll("[^0-9.]", "");
    total = total + Double.parseDouble(line);
}
于 2012-11-06T14:50:10.107 に答える