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.

int[] argumento no es válido para los argumentos del método T[]

Estoy trabajando en una clase de algoritmo de ordenamiento y una clase principal para probar los Algoritmos de Ordenamiento. Cada vez que intento llamar a un método de la clase de algoritmo de ordenamiento en la clase principal, obtengo un error similar a este:

El método quickSortRandom(T[], int) en el tipo SortAlgorithms no es aplicable para los argumentos (int[], int)

Estoy intentando ingresar un arreglo de enteros en un método que acepta Type T[], y no entiendo por qué no funciona o cómo solucionarlo. Aquí está el método principal:

public static void main(String args[]) {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = arr.length;

    SortAlgorithms s = new SortAlgorithms();
    s.quickSortRandom(arr,arr.length); }

Y aquí está el método quickSortRandom en la clase de algoritmos de ordenamiento:

public static <t extends=""></t><? super T>>
   void quickSortRandom(T[] array, int n)
{
    quickSortRandom(array, 0, n-1);
} // end quickSortRandom
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que el método quickSortRandom en la clase SortAlgorithms está esperando un array de tipo T[], pero en el método principal estamos pasando un array de tipo int[]. Para solucionar esto, podemos cambiar el tipo del array en el método principal a Integer[], que es un tipo válido para T[]. Aquí está el método principal actualizado:

    public static void main(String args[]) {
            Integer arr[] = {10, 7, 8, 9, 1, 5}; // Cambiar el tipo a Integer[]
            int n = arr.length;
    
            SortAlgorithms s = new SortAlgorithms();
            s.quickSortRandom(arr,arr.length);
        }
    

    Alternativamente, podemos cambiar el método quickSortRandom para que acepte un array de tipo int[] en lugar de T[]. Aquí está el método quickSortRandom actualizado:

    public static void quickSortRandom(int[] array, int n)
    {
        Integer[] arr = Arrays.stream(array).boxed().toArray(Integer[]::new); // Convertir int[] a Integer[]
        quickSortRandom(arr, 0, n-1);
    } // fin quickSortRandom
    

    En este método actualizado, primero convertimos el array int[] en un array Integer[] usando Streams API, y luego llamamos al método quickSortRandom original que acepta un array de tipo T[].

Comments are closed.