es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Compruebe si el arreglo está ascendiendo.

Tengo un array de Java int[] field = new int[9] que se ve así: {1,2,3,4,5,6,7,8,9,0}.

En un método public static boolean isSorted(int[] field, boolean isAscending) quiero comprobar si el array está ordenado en orden ascendente o descendente. He intentado lo siguiente:

boolean fetch = false;
            if(field == null){
                fetch = false;
            }
            else if(isAscending){
                for(int i = 0; i < (field.length-1); i++){
                    if(field[i] > field[i+1])
                        fetch = false;
                    else
                        fetch = true;
                }
            }
            else if(!isAscending){
                for(int i = 0; i <= (field.length); i++){
                    if(field[i] < field[i+1])
                        fetch = false;
                    else
                        fetch = true;
                }
            }
            return fetch;
    }

Sin embargo, al aplicar este método al array mencionado anteriormente, obtengo dos resultados diferentes cuando se pasa el parámetro isAscending una vez verdadero y otra vez falso al método. El resultado debería ser falso para ambos casos porque hay números ascendentes y descendentes en el array al mismo tiempo. Sé que el problema radica en la estructuración del código.

¿Cómo puedo mejorar esto y obtener el resultado deseado?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mejorar el código y obtener el resultado deseado, se puede modificar el código de la siguiente manera:

    public static boolean isSorted(int[] field, boolean isAscending) {
        if(field == null) {
            return false;
        }
        if(isAscending){
            for(int i = 0; i < field.length-1; i++){
                if(field[i] > field[i+1]) {
                    return false;
                }
            }
        } else {
            for(int i = 0; i < field.length-1; i++){
                if(field[i] < field[i+1]) {
                    return false;
                }
            }
        }
        return true;
    }
    

    En el código modificado, si el array field es nulo, el método devolverá falso. No se requiere ningún procesamiento adicional. Si isAscending es verdadero, el método verifica si cada elemento es menor o igual al siguiente elemento. Si algún elemento es mayor que el siguiente elemento, el método devuelve falso. Si isAscending es falso, el método verifica si cada elemento es mayor o igual al siguiente elemento. Si algún elemento es menor que el siguiente elemento, el método devuelve falso. Finalmente, si no se encuentra ningún problema, devuelve verdadero.

    Este código asegura que el array se verifique correctamente independientemente del orden, y proporciona el resultado deseado.

Comments are closed.