[ Foro de Java ]
necesito ayuda, urgente
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;}
}
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.)