Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查if语句中的两个字符串?_Java_Android_If Statement - Fatal编程技术网

Java 如何检查if语句中的两个字符串?

Java 如何检查if语句中的两个字符串?,java,android,if-statement,Java,Android,If Statement,我的数据库中存储了两个字符串(纬度和经度)。我只希望在安装我的应用程序的设备到达某个位置后启动活动 我想写一个if语句(见下面的代码)来解决这个问题,但是它不起作用 还有别的办法吗 谁能给我一些建议吗 tvLatitude.setText(String.valueOf(gps.getLatitude())); tvLongitude.setText(String.valueOf(gps.getLongitude())); String longi = tvLongitude.getText().

我的数据库中存储了两个字符串(纬度和经度)。我只希望在安装我的应用程序的设备到达某个位置后启动活动

我想写一个if语句(见下面的代码)来解决这个问题,但是它不起作用

还有别的办法吗

谁能给我一些建议吗

tvLatitude.setText(String.valueOf(gps.getLatitude()));
tvLongitude.setText(String.valueOf(gps.getLongitude()));
String longi = tvLongitude.getText().toString();
String lati =  tvLatitude.getText().toString();
String WorkLocationlongi = "REQUIRED LONGITUDE";
String WorkLocationlati = "REQUIRED LATITUDE";
mRootRef.child("Longitude").setValue(longi);
mRootRef.child("Latitude").setValue(lati);

if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi)){
    String dtbClockon = tvClock.getText().toString();
    mRootRef.child("Dave_Clock_on_date").setValue(formattedDateOnly);
    mRootRef .child("Dave_Clock_on").setValue(dtbClockon);
    startActivity(new Intent(getBaseContext(), MainActivity.class));
} 
else {
    Toast.makeText(context,"Not in work area please enter the yard and try again",Toast.LENGTH_SHORT).show();
}

谢谢。

我认为使用的变量有点混乱,基于这个假设,我建议更改

if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi))


我认为问题在于gps不准确。所以,即使你在同一个地方,每次都会得到不同的价值

可以取longi、lati、WorkLocationlati和WorkLocationlongi的前几个小数


注意:(小数点越多,位置越精确)

我认为,如果您将longi与WorkLocationlati进行比较,则在中比较的值是错误的。此外,我建议您为此创建一些范围,因为在GPS中,完全相同的位置将有点复杂。也许你应该看看这里的答案:

出了什么问题?它编译吗?if是否曾经求值为true,在什么条件下它应该求值为true?等等……a)你是否混淆了lat的long:“如果(longi.equals(WorkLocationlati)和&lati.equals(WorkLocationlongi))”?b) 在这种情况下,long/lat必须完全相同。您应该添加一些“缓冲区”。手机的GPS越精确,就越难精确定位。什么“不起作用”?
longi
lati
应该包含什么?为什么在比较之前要将纬度/经度转换为字符串?如果可以,我建议使用其他或完全其他的方法来确定“用户在工作场所”。。。1.建筑物内可能无法使用GPS定位。(想想“地下室”或厚墙)2。对于不同的公司周长布局,您可能需要跨越一个围栏,而不仅仅是点+距离(=圆形周长)-想象一下在计算机上绘制一个多边形。所以你实际上必须检查你的修复是否在一个由不同位置旋转的区域内。。。3.其他方法可能要简单得多:例如,只能通过公司的(本地)网络登录?准确定位也相当困难。我猜OP将不得不在该点周围跨越一个小区域,该区域将被视为“工作区域”。然后删除几个小数位对我来说很有效。。我不想要大量的wokr,只是检查它们是否在该地区。谢谢你的帮助,他也可以计算出与目标的距离,并考虑某个距离是可接受的(=误差容限)。不过,使用字符串会让这更难。我只想要任何简单的系统lol。。只是在登录之前检查他们是否在工作on@MarkHarrop所以你想要的是一个“GPS围栏”。您无法使用一个特定的GPS位置来实现这一点。这就像是一个观点。您可以使用一个点和到它的一定距离来覆盖一个圆形周界。然而,对于某些建筑来说,这可能还不够。你们还必须记住,你们可能并没有在建筑物内安装GPS。那个么我可以搜索GPS围栏吗?我不知道该找什么thanks@MarkHarrop您应该计算gps位置和工作位置之间的差异(即,如果违抗度小于10,则让员工登录)。这是他们绕着的栅栏
if (longi.equals(WorkLocationlongi)&& lati.equals(WorkLocationlati))