车速表Android应用程序无法使用km / h转换?

时间:2015-04-10 20:48:20

标签: java android

我正在为高中科学博览会制作速度表应用程序,当超过速度时会显示警告信息。当我的应用程序达到速度限制时,它不会显示该消息。但是,当我将部分else if (location.getSpeed() >= (EditNum*3.6))更改为else if (location.getSpeed() >= (EditNum))时,应用就可以运行。问题是,我不想设置MPS的限制。如何使用KM / H转换(* 3.6)运行应用程序? PS我是初学程序员,所以有时候我看不出明显的缺陷。

代码:

TextView txt = (TextView) this.findViewById(R.id.textView1); 
TextView war = (TextView) this.findViewById(R.id.textView2); 
TextView war1 = (TextView) this.findViewById(R.id.textView3); 
TextView war2 = (TextView) this.findViewById(R.id.textView4); 
TextView war3 = (TextView) this.findViewById(R.id.textView6);
TextView setLimit = (TextView) this.findViewById(R.id.textView5);

try{
EditText Edit = (EditText) findViewById(R.id.editText1);

String EditValue = Edit.getText().toString();

float EditNum = Float.parseFloat(EditValue);

setLimit.setText("Speed limit: " + (EditNum) + " km/h");


if (location==null)
{
    txt.setText("-.- km/h");
}
else if (location.getSpeed() >= (EditNum*3.6))
{
    war.setTextColor(Color.parseColor("#CC0000"));
    war.setText("Warning!!!"); 
    war1.setText("Speed limit: " + (EditNum*3.6) + " km/h" );
    war2.setText("Speed: " + (location.getSpeed()*3.6) + " km/h");
    war3.setText("Speed limit exceeded by: " + (EditNum*3.6 - location.getSpeed()) + " km/h");
}
else
{
    float nCurrentSpeed = location.getSpeed();
    txt.setText(nCurrentSpeed*3.6 + " km/h");
}
}
catch (NumberFormatException nfe) {
    nfe.printStackTrace();
}

1 个答案:

答案 0 :(得分:0)

在我看来,你的策略并没有成功。快速看一下,看起来你可能需要除以3.6而不是乘以3.6。

不要将您显示的内容与您计算的内容混淆。

我建议您在调试模式下运行应用程序并添加断点(Android Studio中的红色圆圈),以便您可以查看不同变量在运行时所采用的值。然后,您将很容易理解为什么满足某些条件(或不符合)。