Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Capturar datos en una clase y pedirlo con otra (java)

Estas en el tema de Capturar datos en una clase y pedirlo con otra (java) en el foro de Java en Foros del Web. tengo 3 clases. -Desde la primera mando llamar un método de la segunda para guardar datos en un arreglo en esa misma clase(2da), -Desde la ...
  #1 (permalink)  
Antiguo 01/05/2013, 22:55
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años, 1 mes
Puntos: 1
Capturar datos en una clase y pedirlo con otra (java)

tengo 3 clases.
-Desde la primera mando llamar un método de la segunda para guardar datos en un arreglo en esa misma clase(2da),
-Desde la misma primer clase mando llamar un método de la tercer clase que a su vez llama a una de la segunda que recorre el arreglo comprobando si existe un dato pero no obtiene nada aunque ese dato si exista (si esta bien escrito) y para comprobar que si esta hice un método extra en la segunda clase que recorre todo en busca del dato y si lo encuentra.

Porque?

PD: así tiene que ser el programa (3 clases)

Gracias!!
  #2 (permalink)  
Antiguo 02/05/2013, 01:26
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 9 meses
Puntos: 188
Respuesta: Capturar datos en una clase y pedirlo con otra (java)

Sin el código no creo que nadie de aquí sepa responder a tu problema.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 02/05/2013, 11:38
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Capturar datos en una clase y pedirlo con otra (java)

Un ejemplo de ello (el mío es algo extenso). Pondré lo importante

[A] es el objeto de Altas y [M] de Movimientos

Código HTML:
Class 1{

int op; 
int mat;

do{

switch(op)
{
case 1: A.alta(); break;
case 2: System.out.print("Matricula a buscar:")
             mat=v.nextInt();
             if (M.Busqueda(mat)==true); 
             System.out.print("Si existe la matricula")
             break;
case 3: System.exit(0);
}
while(op!=3);

}//Fin clase
Código HTML:
Class Altas{
 
 //Arreglo de objetos
 int Al[] = new int [10];

 int mat;
 cont=0;

 public void alta(){
 System.out.print("Matricula: ");
 al[cont]=v.nextInt();
 cont++;
}

//------------------------Comprobacion

 public boolean comprobando(int m){
 ban=false;
 for(int i=0; i<cont; i++){
 if(m==Al[i])
   ban=true;
}
return ban;
}

}//Fin clase
Código HTML:
Class Movimientos(){

 public boolean Busqueda(int m){
 ban=false;
 if(A.comprobando(m)==true)
   ban=true;
 return ban;
    
}



} //Fin clase
Espero que me de a entender aunque no haya escrito bien el codigo
Si tengo lo estoy pensando mal díganme como debe ser, gracias!!

Última edición por charlybinn; 02/05/2013 a las 11:45 Razón: Correcion de Datos
  #4 (permalink)  
Antiguo 03/05/2013, 02:01
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 9 meses
Puntos: 188
Respuesta: Capturar datos en una clase y pedirlo con otra (java)

Pero qué es A? Instancias las clases de forma única? Creo que no entiendes bien el concepto de objetos.

ClaseTipoA objA1 = new ClaseTipoA(); // Se crea un objeto a partir de la plantilla ClaseTipoA y se referencia a la variable objA1
ClaseTipoA objA2 = new ClaseTipoA(); // Se crea un objeto a partir de la plantilla ClaseTipoA y se referencia a la variable objA2
objA1.alta(); // Se ejecuta el metodo alta para el objeto referenciado por objA1
// No se ejecuta alta para objA2

ClaseTipoB objB1 = new ClaseTipoB(); // Se crea un objeto a partir de la plantilla ClaseTipoB y se referencia a la variable objB1
Si ahora le pasases algo así
objB1.busqueda(1); // No sabria a que objeto corresponde la busqueda (seguramente a un ClaseTipoA que no esté inicializado)

Por tanto tienes que hacer que objB1 se entere de qué objeto de tipo ClaseTipoA le pasas para que busque.

algo así como objB1.setAlta(objA1); // Y lo referenciaria a una variable alta perteneciente a objB1
objB1.busqueda(1); // Ahora esto buscaria lo que debe

Si hiciesemos
objB1.setAlta(objA2);
objB1.busqueda(1);
No encontraria nada pq en objA2 no hicimos ningun alta


Además, ten cuidado con estas cosas

public void alta(){
System.out.print("Matricula: ");
al[cont]=v.nextInt();
cont++;
}

Cuando cont valga 10, si vuelves a realizar un alta intentará insertar un elemento en una posición no existente del arreglo.

al[10]=v.nextInt();

Con lo cual te saltará un ArrayIndexOutOfBoundsException.

Habría que controlarlo con un

if(cont<10) {
al[cont]=v.nextInt();
cont++;
} else {
System.out.println("Registro lleno");
}

¿Además tampoco tienes garantías que el usuario teclee un int, que pasa si teclea una letra por error? Habria que envolver esto en un bloque try-catch y controlar el error, decir que no has introducido un numero valido y volver a solicitar ingreso de numero.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 04/05/2013, 00:01
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Capturar datos en una clase y pedirlo con otra (java)

Bueno... No lo tomes a mal pero estas pensando que no comprendo esto de los objetos exepciones y demás. Recuerda que dije "pondre lo importante" es decir que solo pondria los metodos y variables que estoy usando como si ya estuviera todo declarado/instanciado etc.

no me importa si teclea o no un int ya que es una prueba mia entonces no aplicaria, en mi programa ya real es otro cuento.

eso del contador claro que lo entiendo, sinceramente hasta siento que me subestimas un poco compañero...

igual gracias por tratar ya que si respondiste parte de mi duda...

Etiquetas: clase, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:05.