检查两个依赖数组中是否存在两个数字-Java

检查两个依赖数组中是否存在两个数字-Java,java,arrays,double,Java,Arrays,Double,我有两个双值数组,称为lat2[]和lon2[]。我在那里存储了特定的格度和长度值。我可以把这些值作为简单的双值。我的问题是如何找到数组中是否存在这两个double(以检查只单击了哪个标记)。以下是我迄今为止所做的工作,但似乎不起作用: @Override public boolean onMarkerClick(Marker marker) { markerLatLng = marker.getPosition(); markerLat = markerLatLng.latit

我有两个双值数组,称为lat2[]和lon2[]。我在那里存储了特定的格度和长度值。我可以把这些值作为简单的双值。我的问题是如何找到数组中是否存在这两个double(以检查只单击了哪个标记)。以下是我迄今为止所做的工作,但似乎不起作用:

@Override
public boolean onMarkerClick(Marker marker) {
    markerLatLng = marker.getPosition();
    markerLat = markerLatLng.latitude;
    markerLng = markerLatLng.longitude;
    for (int i = 0; i < lat2.length; i++) {
        if (markerLat == lon2[i]) {
            for (int j = 0; j < lon2.length; j++) {
                if (markerLng == lon2[j]) {
                    String title = marker.getTitle();
                    Log.e("TAG", " " + title);
                }
            }
        }
    }
    return true;
}
@覆盖
公共布尔onMarkerClick(标记){
markerLatLng=marker.getPosition();
markerLat=markerLatLng.纬度;
markerLng=markerlatng.longitude;
for(int i=0;i
如果我理解了您的数据结构,可能您的for循环中存在问题

如果将纬度和经度存储在两个数组中,我认为位置n中的一个点由经度[n]和纬度[n]定义

如果这是存储点的方式,则需要更新代码:

@Override
public boolean onMarkerClick(Marker marker) {
    int markerLat = marker.getPosition().latitude;
    int markerLng = marker.getPosition().longitude;
    for (int i = 0; i < lat2.length; i++) {
        if (markerLat == lat2[i] && markerLng == lon2[j]) {
            String title = marker.getTitle();
            Log.e("TAG", " " + title);               
        }
    }
    return true;
}
@覆盖
公共布尔onMarkerClick(标记){
int-markerLat=marker.getPosition().latitude;
int-markerLng=marker.getPosition().longitude;
for(int i=0;i

请不要使用全局变量。我编辑了您的代码以定义方法的本地markerLat和MarkerNG(我不知道int是否是正确的类型)。

从lat2、log2数组创建一个列表,例如ArrayList,并检查这些数字是否包含如下内容:

List lat = new ArrayList(lat2);
List lon = new ArrayList(lon2);

if (lat.contains(markerLat) && lon.contains(markerLng)){
            String title = marker.getTitle();
            Log.e("TAG", " " + title);   
}

它是怎么工作的?我需要检查一下数组中是否有markerLat和markerLng。但是当我执行代码时,我无法使用日志命令。你是否使用调试器来找出原因?是的,我在真实设备上运行了代码,但无法找出为什么它不工作。如果(markerLat==lon2[I])
应该是
if(markerLat==lat2[I])
?您不应该通过
=
比较
,尤其是如果其中一个值来自您的值域之外(即用户)。您应该这样比较它们:其中EPS是一个小数字,lat/lon约为
1e-5
。这将为您提供“标记是否与存储在
lat2/lon2
中的某个位置足够近?”的答案,但我需要知道它们是否完全相同,因为它是位置,即使是很小的更改也会使位置不同