Método en Java

He hecho un pequeño y sencillo programa en Java y quiero dividirlo en métodos.

Pongo un código como ejemplo sencillo para simplificar la idea:

-------------------------------------------
class test{
public static void ejemploMetodo(int a,int b){
a=100;
b=50;
}

public static void main(String[] args){
int a = 1;
int b = 2;

ejemploMetodo(a,b);
System.out.println("a: "+a);
System.out.println("b: "+b);

}
}
---------------------------------------

Como veis, lo que quiero es que dada una variable en el main, se utilice en un método y esta variable pueda 'sufrir cambios'.

Si fuera sólo una variable, lo haría con un método int con return, pero como depende más de una variable creo que no se puede.

En el ejemplo que he puesto, al ejecutar ejemploMetodo(a,b) se mantiene a=1 y b=2, cosa que no quiero.

Me he explicado bien? Cómo tengo que modificar el método para que estas variables puedan cambiar de valor?

Gracias.
El problema es que en Java los tipos primitivos se copian a la función, por lo que todos los cambios que hagas en la función se hacen sobre las copias.

Hace mucho, mucho que no trabajo con Java, de modo que no te garantizo que las cosas no hayan cambiado en la última versión, pero hasta donde yo sé no hay manera sencilla de cambiar ese comportamiento. Hay al menos dos opciones: una es encapsular los enteros en un objeto y alterar ese objeto en la función. La segunda es introducir los enteros en un array y trabajar con él en la función. En ambos casos, no se realiza copia por lo que los cambios se realizan sobre la estructura que pasas a la función.

Ejemplo:
class test{
   public static void ejemploMetodo(int[] ar){
      
      ar[0] = 100;
      ar[1] = 50;
   }
   
   public static void main(String[] args){
      int[] ar = new int[2];
      ar[0] = 1;
      ar[1] = 2;
      
      ejemploMetodo(ar);
      System.out.println("a: " + ar[0]);
      System.out.println("b: " + ar[1]);      
   }
}
Muchas gracias [ginyo]

Como las variables quedan 'sin nombre' con un array, si se utilizan muchas variables luego el programa es ilegible, probé de usar lo de los objetos.

Algunas partes del programa me funcionan, hasta que he llegado a un bucle. Dejo un ejemplo.


class Objeto{

    private int i;
   
    public Objeto(int variableI){
        i = variableI;
    }


    public void setI(int variableI){
        i = variableI;
        i++;
    }
}

class Principal{
   
    public static void main(String[] args) throws IOException{
        int i=0;
        Objeto objetoA;
        objetoA = new Objeto(i);


        while(i<10){
            System.out.println("Linea: "+i);
            objetoA.setI(i);
        }

    }
}<



Dentro del bucle quiero que se haga un contador (i++), por eso he creado el método setI. La cuestión es que no aumenta... Se crea un bucle infinito con i=0.

Cuál es el problema?
Estás incrementando la variable i del objeto, no la variable i local del método main y que usas de condición en el bucle, por eso su valor nunca cambia del valor 0 que le asignas inicialmente.
3 respuestas