Java 速度表Android应用程序不支持公里/小时转换?

Java 速度表Android应用程序不支持公里/小时转换?,java,android,Java,Android,我正在为一个高中科学展制作一个速度计应用程序,当超过某个速度时,它会显示一条警告信息。当我的应用程序达到速度限制时,它不会显示该消息。但是,当我将else if(location.getSpeed()>=(EditNum*3.6))部分更改为else if(location.getSpeed()>=(EditNum))时,应用程序可以正常工作。问题是,我不想限制议员人数。如何使用公里/小时转换(*3.6)使应用程序运行?PS我是一个初学者程序员,所以有时候我看不到明显的缺陷 代码: 在我看来,你

我正在为一个高中科学展制作一个速度计应用程序,当超过某个速度时,它会显示一条警告信息。当我的应用程序达到速度限制时,它不会显示该消息。但是,当我将
else if(location.getSpeed()>=(EditNum*3.6))
部分更改为
else if(location.getSpeed()>=(EditNum))
时,应用程序可以正常工作。问题是,我不想限制议员人数。如何使用公里/小时转换(*3.6)使应用程序运行?PS我是一个初学者程序员,所以有时候我看不到明显的缺陷

代码:


在我看来,你的策略没有奏效。快速查看,您可能需要除法而不是乘以3.6

不要混淆你的显示和你的计算


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

你试过调试你的代码吗?自从以前的更改后,我还没有调试过,但我现在将尝试。调试时,请关注location.getSpeed()的值以及EditNum*3.6的计算结果。这将有望帮助您找到自己问题的答案。EditNum是用户可以在UI上输入速度限制的EditText(numberDecimal)。*3.6正在将输入的数字转换为km/h。因此,假设EditNum为3,3.6将为10.8,那么location.getSpeed()的值是多少?好的,因为手机需要移动才能达到速度,如何在拔下插头时进行调试?使用笔记本电脑调试它:D或在程序中插入标量(一个值),而不是location.getSpeed()您可能更喜欢的另一个选项是在toast中显示值。这样,您就可以记下值是什么,然后进行分析,而无需进入调试模式
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();
}