java -多维数组中的搜索值

时间:2022-04-18 02:35:18

I need to search an array and find a certain value, if it exists returns true, and if it doesn't exist returns false.

我需要搜索一个数组并找到一个特定的值,如果它存在则返回true,如果不存在则返回false。

The array:

数组:

private String zonaDeInternamento[][][] = {
    {
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "0012", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"}
    },
    {
        {"Livre", "0013", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"},
        {"Livre", "Livre", "Livre", "Livre"}
    }
};

So, If the search finds one of the numbers, it returns true, if it finds "Livre", returns false;

如果搜索找到其中一个数字,它返回true,如果它找到Livre,返回false;

public boolean isPacienteInternado(String numeroProcesso) {
    if (isNumeroProcessoValido(numeroProcesso)) {
        for (int i = 0; i < zonaDeInternamento.length; i++) {
            for (int j = 0; j < zonaDeInternamento[i].length; j++) {
                for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                    if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                        System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
                        return true;
                    } else {
                        System.out.println("O paciente com número de processo " + numeroProcesso + " não está internado!");
                        return false;
                    }
                }
            }
        }
    }
    return false;
}

It keeps returning false, never goes inside the if statement, returns the else message and false. Running debug if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) returns false when numeroProcesso is 13 or 12. What am I missing?

它一直返回false,从不进入if语句,返回else消息和false。运行debug if (zonaDeInternamento[i][j][h].equals(numeroProcesso)))当numeroProcesso是13或12时返回false。我缺少什么?

4 个解决方案

#1


1  

public boolean isPacienteInternado(String numeroProcesso) {
if (isNumeroProcessoValido(numeroProcesso)) {
    for (int i = 0; i < zonaDeInternamento.length; i++) {
        for (int j = 0; j < zonaDeInternamento[i].length; j++) {
            for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
                    return true;
                }
            }
        }
    }
}
return false;}

#2


1  

Your for loop makes only one itaration because you return true or false in first step. So delete the else statement.

你的for循环只产生一个itaration,因为你在第一步返回true或false。删除else语句。

if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
   System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
   return true;
}

#3


1  

You have given return false at the end of the block which is causing the error remove the return false at the bottom.

您在块的末尾给出了return false,这导致了错误,请删除底部的return false。

public boolean isPacienteInternado(String numeroProcesso) {
   bool value;
   if (isNumeroProcessoValido(numeroProcesso)) {
      for (int i = 0; i < zonaDeInternamento.length; i++) {
         for (int j = 0; j < zonaDeInternamento[i].length; j++) {
             for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                 if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                     System.out.println("O paciente com número de processo " + numeroProcesso + "                 está internado!");
                    bool = true;
                } else {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " não está internado!");
                    bool = false;
                }
            }
        }
    }
}
return bool;

}

}

#4


1  

You are only checking one item in the entire array and if it is not equal to numeroProcesso then you are exiting the loop. Instead you need to continue looping until either 1. You found a match or 2. You iterated over every item in the array. Instead you want something like this:

您只在整个数组中检查一个项,如果它不等于数字选项,那么您将退出循环。相反,您需要继续循环,直到任何一个1。你找到了一对。遍历数组中的每个项。相反,你需要这样的东西:

public boolean isPacienteInternado(String numeroProcesso) {
if (isNumeroProcessoValido(numeroProcesso)) {
    for (int i = 0; i < zonaDeInternamento.length; i++) {
        for (int j = 0; j < zonaDeInternamento[i].length; j++) {
            for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
                    return true;
                } 
            }
        }
    }
    // let the user know that a match was not found
    System.out.println("Combinar não encontrado");
}
return false;

}

}

#1


1  

public boolean isPacienteInternado(String numeroProcesso) {
if (isNumeroProcessoValido(numeroProcesso)) {
    for (int i = 0; i < zonaDeInternamento.length; i++) {
        for (int j = 0; j < zonaDeInternamento[i].length; j++) {
            for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
                    return true;
                }
            }
        }
    }
}
return false;}

#2


1  

Your for loop makes only one itaration because you return true or false in first step. So delete the else statement.

你的for循环只产生一个itaration,因为你在第一步返回true或false。删除else语句。

if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
   System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
   return true;
}

#3


1  

You have given return false at the end of the block which is causing the error remove the return false at the bottom.

您在块的末尾给出了return false,这导致了错误,请删除底部的return false。

public boolean isPacienteInternado(String numeroProcesso) {
   bool value;
   if (isNumeroProcessoValido(numeroProcesso)) {
      for (int i = 0; i < zonaDeInternamento.length; i++) {
         for (int j = 0; j < zonaDeInternamento[i].length; j++) {
             for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                 if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                     System.out.println("O paciente com número de processo " + numeroProcesso + "                 está internado!");
                    bool = true;
                } else {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " não está internado!");
                    bool = false;
                }
            }
        }
    }
}
return bool;

}

}

#4


1  

You are only checking one item in the entire array and if it is not equal to numeroProcesso then you are exiting the loop. Instead you need to continue looping until either 1. You found a match or 2. You iterated over every item in the array. Instead you want something like this:

您只在整个数组中检查一个项,如果它不等于数字选项,那么您将退出循环。相反,您需要继续循环,直到任何一个1。你找到了一对。遍历数组中的每个项。相反,你需要这样的东西:

public boolean isPacienteInternado(String numeroProcesso) {
if (isNumeroProcessoValido(numeroProcesso)) {
    for (int i = 0; i < zonaDeInternamento.length; i++) {
        for (int j = 0; j < zonaDeInternamento[i].length; j++) {
            for (int h = 0; h < zonaDeInternamento[i][j].length; h++) {
                if ((zonaDeInternamento[i][j][h].equals(numeroProcesso))) {
                    System.out.println("O paciente com número de processo " + numeroProcesso + " está internado!");
                    return true;
                } 
            }
        }
    }
    // let the user know that a match was not found
    System.out.println("Combinar não encontrado");
}
return false;

}

}