我很困惑,因为这不应该是一个问题,我将数据从文件加载到类列表,然后我从用户输入检查 - 一个字符串。如果比较时字符串相等,则应打印从文件中提取的一些变量。
public static Double[] buscarLocacion(String estado,String municipio){
Double[] coord = { 0.0, 0.0 };
for(Ubicacion i: ubicacion) {
System.out.println("check: "+estado +" getEstado:"+ i.getEstado() + " ==: " +i.getEstado().equals(estado));
if(i.getEstado().equals(estado)) {
if(i.getMunicipio().equals(municipio)) {
coord[0] = i.getLat();
coord[1] = i.getLon();
return coord
//etc..
我用一个main函数创建了一个单独的类。这按预期工作,程序在字符串相等时打印出来:
found: hidalgo - tula de allende lat:20.0535516 lon: -99.3395636
然而,当我将这个类导入另一个类时,在进行比较时,我总是得到null。我打印了什么是比较,如果程序发现比较是真或假,如下:
System.out.println("check: "+estado +" getEstado:"+ i.getEstado() + " equals?=: " +i.getEstado().equals(estado));
并且此代码打印出来:
check: yucatan file:veracruz de ignacio de la llave ==: false
check: yucatan file:yucatan ==: false //<<<- how is this possible??
check: yucatan file:oaxaca ==: false
为什么会发生这种情况?我找不到问题。我在这里做错了什么?
答案 0 :(得分:1)
您的输入可能包含空格。例如," yucatan"
。
答案 1 :(得分:0)
可能问题出在&#34; i&#34;或带有标题或尾随空格。请尝试以下方法:
public static Double[] buscarLocacion(String estado,String municipio){
Double[] coord = { 0.0, 0.0 };
for(Ubicacion i: ubicación){
String iEstado = i.getEstado().trim();
estado = estado.trim();
System.out.println("check: "+estado +" getEstado:"+ iEstado + " ==: " +iEstado.equals(estado));
if(iEstado.equals(estado)){
String iMunicipio = i.getMunicipio().trim();
municipio = municipio.trim();
if(iMunicipio.equals(municipio)){
coord[0] = i.getLat();
coord[1] = i.getLon();
return coord
//etc..
之前我遇到过这种错误,虽然我不确定为什么会这样,但这应该会修复你的代码。如果是,您可以尝试更改比较的顺序:
estado.equals(i.getEstado());
并检查它是否有效(不必创建其他变量)。