El intercambio de índices del array llamando a un método

mightymorphinParkRanger:

Resuelto (código se actualiza)

Estoy teniendo problemas para encontrar por qué mi código no funciona. Tengo el método que intercambia los valores y por lo que yo sé, que debería estar trabajando. He mirado en este enlace aquí, pero no puedo decir que hice mal (ya sé que no es Java, pero el concepto es el mismo) https://www.kirupa.com/html5/swapping_items_array_js.htm

Aquí está un ejemplo de salida del código:

4
1
1
1
1
Provide two indicies to swap
0
2
4
1
1
1
1

/

import java.util.Scanner;
public class Test100 {

    public static void main(String[] args) {
        Scanner arrayScan = new Scanner(System.in);
        int[] values = new int[5];

        values[0] = 4;
        values[1] = 1;
        values[2] = 1;
        values[3] = 1;
        values[4] = 1;

        System.out.println(values[0]);
        System.out.println(values[1]);
        System.out.println(values[2]);
        System.out.println(values[3]);
        System.out.println(values[4]);

//      provide user input to choose values to swap
        System.out.println("Provide two indicies to swap");
        int userInput1 = Integer.valueOf(arrayScan.nextLine());
        int userInput2 = Integer.valueOf(arrayScan.nextLine());

        int inputArray1 = values[userInput1];
        int inputArray2 = values[userInput2];


        valSwap(values, userInput1, userInput2);    

        System.out.println(values[0]);
        System.out.println(values[1]);
        System.out.println(values[2]);
        System.out.println(values[3]);
        System.out.println(values[4]);

    }

    public static void valSwap(int[] array, int input1, int input2) {
    int swapper = array[input1];
    array[input1] = array[input2];
    array[input2] = swapper;

    }
}

Me di cuenta que originalmente había sido puesta en el indicie matriz dentro de mi argumento utilizado dentro del método cuando lo llamé. Cambié que a lo largo de sólo el valor introducido por el usuario, porque me di cuenta que alteró el método basado fuera de lo que el usuario @Joop Eggen había mencionado. He modificado mi método para que coincida con eso y luego alteró los argumentos cuando lo llamé.

Joop Eggen:

Java fue diseñado para que f(x)nunca cambia una variable pasada x. Que se pasa a la (objeto) valor de la variable, no una "dirección" (referencia) de alguna variable.

Así intercambiando posiciones de la red:

void swap(int[] array, int index1, int index2) {
    int temp = array[index1];
    array[index1] = array[index2];
    array[index2] = temp;
}

Así que swap(values, 2, 3)nunca va a cambiar valuesa punto de nulo o otro arreglo, pero el objeto de matriz puede ser cambiado internamente.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=319068&siteId=1
Recomendado
Clasificación