0

这些是我在 android 和编程方面的开端 :-)

在我的 android 应用程序中,将计算(转换为字符串)传递给下一个活动,在该活动中它将字符串替换为浮点数并执行 if 语句。在浮动的基础上,TextView 中会出现相应的消息。该程序似乎有效,但消息似乎是随机的。

第一个活动菜单中的代码:

buttonNextMetric.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {

           Intent intent = new Intent().setClass(Menu.this, NextMetric.class);


          intent.putExtra("ace", ace.getText().toString());

           startActivity(intent);

活动 NextMetric 中的代码:

        textpochwala = (TextView) findViewById(R.id.textViewNextPochwala);


        try {
         float g = Float.valueOf(nextmsac.trim());
        }
        catch (NumberFormatException nfe)
        {
            System.err.println(""+ nfe.getMessage());
        }
        if (g <=10) {
            textpochwala.setText(R.string.pochwala10); 
        }
        else if (g>10 && g<=15) {
            textpochwala.setText(R.string.pochwala15);  
        }
        else if (g>15 && g<=20) {
            textpochwala.setText(R.string.pochwala20); 
        }
        else if (g>20 && g <=25) {
            textpochwala.setText(R.string.pochwala25); 
        }
        else if (g>25) {
            textpochwala.setText(R.string.pochwala30); 
        }

代码字符串.xml:

<string name="pochwala10"> A < / string>
<string name="pochwala15"> B < / string>
<string name="pochwala20"> C </ string>
<string name="pochwala25"> D </ string>
<string name="pochwala30"> E </ string>

似乎 g> 25 message E (OK ), 20 < g <25 message D (OK) g <20 message A 的结果。为什么?消息 B 和 C 未出现。怎么了?

在模拟器上一切正常。它在电话上不起作用。

4

1 回答 1

0

您在块float g内部定义try/catch但试图在外部使用它。这可能是您g的类定义中有另一个属性,并且您正在引用它。

无论如何,使用下面的代码并检查它是否解决了您的问题。

String nextmsac = getIntent().getStringExtra("ace");

try {
    float g = Float.valueOf(nextmsac.trim());

    if (g <= 10) {
        textpochwala.setText(R.string.pochwala10);
    } else if (g > 10 && g <= 15) {
        textpochwala.setText(R.string.pochwala15);
    } else if (g > 15 && g <= 20) {
        textpochwala.setText(R.string.pochwala20);
    } else if (g > 20 && g <= 25) {
        textpochwala.setText(R.string.pochwala25);
    } else if (g > 25) {
        textpochwala.setText(R.string.pochwala30);
    }

} catch (NumberFormatException nfe) {
    System.err.println("" + nfe.getMessage());
    textpochwala.setText("error on converting nextmsac to float!: " + nextmsac);
}   
于 2013-11-09T09:37:59.163 回答