我正在为高中科学博览会制作速度表应用程序,当超过速度时会显示警告信息。当我的应用程序达到速度限制时,它不会显示该消息。但是,当我将部分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();
}
答案 0 :(得分:0)
在我看来,你的策略并没有成功。快速看一下,看起来你可能需要除以3.6而不是乘以3.6。
不要将您显示的内容与您计算的内容混淆。
我建议您在调试模式下运行应用程序并添加断点(Android Studio中的红色圆圈),以便您可以查看不同变量在运行时所采用的值。然后,您将很容易理解为什么满足某些条件(或不符合)。