如何在Android Studio中将3 int从得分加到总得分

时间:2019-06-20 09:09:01

标签: java android calculation

我正在尝试从不同的比赛水平构建得分卡。在android studio中

我尝试将3 int的总和相加,也尝试将其加倍。但是我无法得到总数。我确实获得了每个级别的分数

public class ScoresActivity extends AppCompatActivity {

    TextView tv_total_Score, tvPersonalBest_Begin, tvPersonalBest_Normal, tvPersonalBest_Advance;
    Button btnReturn;

    int totalscore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scores);

        SharedPreferences pref = getSharedPreferences("MyPref", 0);
        int scoreSPBG = pref.getInt("scoreSPBG", 0);
        SharedPreferences prefs = getSharedPreferences("MyPref", 0);
        int scoreSP = prefs.getInt("scoreSP", 0);
        SharedPreferences prefz = getSharedPreferences("MyPref", 0);
        int scoreSPAD = prefz.getInt("scoreSPAD", 0);

        SharedPreferences.Editor editor = pref.edit();
        SharedPreferences.Editor editors = prefs.edit();
        SharedPreferences.Editor editorz = prefs.edit();
        editorz.putInt("scoreSAD", scoreSPAD);
        editor.putInt("scoreSPBG", scoreSPBG);
        editors.putInt("scoreSp", scoreSP);
        editors.apply();
        editorz.apply();
        editor.apply();



        tv_total_Score = findViewById(R.id.tv_total_Score);
        tvPersonalBest_Begin = findViewById(R.id.tvPersonalBest_Begin);
        tvPersonalBest_Normal = findViewById(R.id.tvPersonalBest_Normal);
        tvPersonalBest_Advance = findViewById(R.id.tvPersonalBest_Advance);

        btnReturn =findViewById(R.id.btn_return);

        Double n1 = Double.valueOf(tvPersonalBest_Begin.getText().toString());
        double n2 =Double.valueOf(tvPersonalBest_Normal.getText().toString());
       double n3 =Double.valueOf(tvPersonalBest_Advance.getText().toString());        

       double result = n1+n2+n3;
       tv_total_Score.setText("" + result);

         totalscore = scoreSPBG + scoreSP + scoreSPAD;
         tv_total_Score.setText("" + totalscore);


        tvPersonalBest_Begin.setText("" + scoreSPBG);
        tvPersonalBest_Normal.setText("" + scoreSP);
        tvPersonalBest_Advance.setText("" + scoreSPAD);

        btnReturn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent returnIntent = new  Intent(ScoresActivity.this,MainActivity.class);
                startActivity(returnIntent);
            }
        });

    }

}

我尝试使用double并尝试使用int进行计算。但是我无法获得我三个等级的总和。

3 个答案:

答案 0 :(得分:1)

首先,您遇到错字了:

editorz.putInt("scoreSAD", scoreSPAD);

应为:

editorz.putInt("scoreSPAD", scoreSPAD);

为避免将来出现此类错误,请考虑使用常量作为首选项键。

第二,您正在访问首选项以获取存储的值,然后再次进行中间存储而不更改它们。请注意,您首先显示结果的变量值,但在下一行中,使用首选项值的总和更新它。因此,您将始终为零

第三,您将它们作为首选项存储为int,但从视图中将它们存储为double,如果希望它们具有小数,请使用getDouble和putDouble方法。

第四,尽管我猜想您只是递归地调用ScoresActivity进行调试,但考虑使用Extras将参数传递给活动而不是使用首选项(如果您不打算保留它们)。

答案 1 :(得分:0)

首先,您需要做一个关于SharedPreference的很好的教程。官方的做得很好:enter link description here 在您的情况下,pref,prefs和prefz完全相同,因此您无需创建3个Editor。同样,为什么要检索偏好中的分数以在之后插入它们。 因此,也许您没有将分数很好地放在sharedpreference中,并且始终将其检索为0。这就是为什么tv_total_Score显示0的原因。

此外,如果您只有int,则无需使用Double。 并使用驼峰大小写约定命名变量,避免使用下划线。

答案 2 :(得分:-2)

尝试使用Double.sum求和2个双精度值。

示例:

Double.sum(0.08, 0.0491)