[ Foro de Java ]

necesito ayuda, urgente

12-Nov-2006 09:52
David Castillo
1 Respuestas

quisiera saber como regresar un arreglo. lo mande del main como parametro a otra clase, pero necesito regresar valores que ingrese en la otra clase.

public class Main {
   

    public static void main(String[] args) {
           
    String usuarios[][]=new String[10][2];
    usuarios[0][0]="01124785";
    usuarios[0][1]="Moises";
    usuarios[1][0]="01090342";
    usuarios[1][1]="David";
   
    int saldo[][]=new int[10][2];
    saldo[0][0]=20000;
    saldo[1][0]=15000;
    saldo[2][0]=0;
   
     
      System.out.println("                               Bienvenido a tu tienda");
      System.out.println("Selecciona lo que deseas hacer:");
      System.out.println("A. Ingresar");
      System.out.println("B. Registrarse");
      System.out.println("C. Salir");
    
      try{
        char opcion1='A';
        while(opcion1!='C'&&opcion1!='c'){
            opcion1=(char)System.in.read();
            System.in.skip(System.in.available());
                switch (opcion1){
                    case 'a':case'A':
                        Ingreso i=new Ingreso();
                        break;
                    case 'b':case'B':
//me pone Exception in thread "main" java.lang.NoSuchMethodError: administraciondetienda.Registro.<init>([[Ljava/lang/String;)V
        at administraciondetienda.Main.main(Main.java:44)
                        Registro r= new Registro(usuarios);
                        break;
                    case 'c':case'C':
                        System.out.println("Gracias por su preferencia, vuelva pronto");
                        break;
                    default: System.out.println("Error, por favor elija una de las opciones anteriores");
                        Main m=new Main();
                         break;
                         }
                }
        }
        catch (IOException e){
        }
    }
  }             



mi otra clase es esta:

public class Registro {
   
   public String [][] Registro(String usuarios[][]){
      System.out.println("Bienvenido al sistema de registros");  
  
      InputStreamReader x = new InputStreamReader (System.in);
        BufferedReader buffer = new BufferedReader (x);
      try{
        int cont1=0;
        System.out.println("Por favor ingresa tu matricula (Solo numeros), esta será tu clave de usuario");
        String nuevoCode=buffer.readLine();
        usuarios[2+cont1][0]=nuevoCode; 
        cont1++;
    }
   
    catch(IOException e){
        System.out.println("Error");
    }
     
      InputStreamReader y = new InputStreamReader (System.in);
      BufferedReader buffer2 = new BufferedReader (y);
     
      try{
        int cont=0;
        System.out.println("Por favor ingresa tu nombre");
        String nuevoName=buffer2.readLine();
        usuarios[2+cont][1]=nuevoName;
        cont++;
    }
    catch(IOException e){
        System.out.println("Error");
  }
  
int cont2=0;
 for(cont2=0;cont2<10;cont2++){
     System.out.println(usuarios[cont2][0]+" "+usuarios[cont2][1]);}

   return usuarios;}
}


20-Nov-2006 23:19
Nacho Cabanes (+83)

En principio, los arrays, al igual que los objetos, se pasan por referencia, por lo que deberías poder modificar su valor y conservar las modificaciones.

Aun así, no entiendo para qué usas una clase y le pasas parámetros al constructor, porque se supone que no llamarás al constructor varias veces, sino sólo una. Creo que el planteamiento es incorrecto: el array sería una estructura interna (atributo) de la clase, y tú le pasarías sólo un parámetro: el dato a registrar. Por otra parte debería haber algún método que te devuelva valores, en vez de modificar el parámetro de entrada.

Parece que estás imitando "funciones convencionales" usando clases, y si eso de por sí es peligroso (no es un diseño fácil de mantener), pero además (insisto) los parámetros que quieras pasar repetidas veces deberán llegar a través de métodos, no de el constructor: el constructor, por definición, sólo se llama una vez en la vida del objeto, y es cuando se crea.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)