0

在我正在创建的一个简单应用程序中,一切都设置得很好,我可以毫无问题地使用字符串,对于如何根据一些用户输入变量计算输出有点头疼,下面是按钮执行计算的地方,据我所知,所有变量都设置得很好,如果你愿意,我可以发布完整的代码。

我需要'lbm'的输出。'weight' 和 'bodyfat' 都是 EditText 转换为 int 的,并且(希望)被计算以提供答案,然后将其传递给 textView 的 'lbmResult'。

case R.id.btnCalcCalories:
            int weight = Integer.parseInt(weightInt);
            int bodyfat = Integer.parseInt(bodyfatInt);
            lbm = weight*(100 - bodyfat)/100;
            lbmResult.setText(lbm);
            break;
        }
4

5 回答 5

2

尽管您没有提到您将lbm声明为int还是double,但我假设第一种情况并在下面查看,您的代码将是..

        case R.id.btnCalcCalories:
            int weight = Integer.parseInt(weightEdittextValue.getText().toString());
            int bodyfat = Integer.parseInt(bodyfatEdittextValue.getText().toString());
            int lbm = weight*(100 - bodyfat)/100;
            lbmResult.setText(String.valueOf(lbm));
            break;

但我建议你需要使用double而不是int像 as.. 那样得到正确的结果。

case R.id.btnCalcCalories:
    double weight = Integer.parseInt(weightEdittextValue.getText().toString());
    double bodyfat = Integer.parseInt(bodyfatEdittextValue.getText().toString());
    double lbm = weight*(100 - bodyfat)/100;
    lbmResult.setText(String.valueOf(lbm));
    break;
于 2013-04-29T19:29:59.960 回答
1

setText 接受一个字符串,并且您传递给它一个浮点数。要打印它,您必须先转换lbm为字符串。

尝试lbmResult.setText(Float.toString(lbm));

于 2013-04-29T18:40:51.553 回答
1
String temp=Integer.toString(lbm);   
 lbmResult.setText(temp);

此外,最好使用 double 进行计算并将其格式化为小数点后 2 位

于 2013-04-29T18:40:51.647 回答
1

代码没有显示它,但lbm很可能是 type int。因此setText(int)使用了重载,它需要一个资源 id 但lbm不是一个。将其更改为:

lbmResult.setText(Integer.toString(lbm));

改为使用setText(CharSequence)重载。

于 2013-04-29T18:40:45.210 回答
1
lbmResult.setText(lbm);

=>

lbmResult.setText("" + lbm);
于 2013-04-29T18:44:00.053 回答