Programación General > Java

 problema con programa de arreglos

<< < (2/2)

krentos8:
import java.io.*;
public class Arreglo{
public float[]Leer()throws IOException{
BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
float A[]=new float[10];
for(int x=0;x<10;x++){
System.out.print("Escribe un numero"+x);
A[x]=Float.parseFloat(entrada.readLine());
     }
return A;
}
public  float Impares( float A[]){
   float D[]=new float[10];
   int x=0, w=0;
   for(w=0;w<10;w++){
      if(A[x]%2==0){
    D[w++]=A[x];
   }
   }
   System.out.println("arreglo pares:"+D);
   return (w);
   }
}


import java.io.*;
public class Llamar{
public static void main(String []args)throws IOException{
 Arreglo obj=new Arreglo();
 float D[]=new float[10];
 obj.Leer();
 obj.Pares(D);
}
}    
      
Estuve intentando pero solo me manda esto
Escribe un numero89
Escribe un numero910
arreglo pares:[F@addbf1
alguien que me pueda orientar

icedTea:
arreglo pares:[F@addbf1

esto sale cuando haces esto: System.out.println("arreglo pares:"+D);

D contiene la referencia que es: [F@addbf1  
eso es solo una dirección en tu memoria... en la cual está tu arreglo, pero no quieres eso.

Ocuparás un for para recorrer D.
por ejemplo: si mi arreglo es de 10 elementos:


--- Código: Text ---for(i = 0; i<10; i++){   System.out.println("Par: "+ D[i]);} 
Sigue pensando...  ;)

icedTea:
Bueeeno... esperaba qUE te pasaras por el foro hoy domingo pero nada....

Bueno... modifiqué algo tu código... ojalá te sirva... también traté de comentarlo un poco:

Arreglo.java


--- Código: Text ---import java.io.*;public class Arreglo{    // Declaré los arreglos de modo global, para que puedan ser     // usados por todos los métodos    int A[]=new int[10];    int B[]=new int[10];    public int[]Leer(){         /*            public int[] Leer() throws IOException{            lo cambié, al hacer tu método de esta manera le estás diciendo que            en algún lugar del método lanzaras TU MISMO la excepción,             la excepción se lanza de la siguiente manera:            throw new Exception("error");            esto lo harías de la siguiente forma:            if(todoBien){                Hagomiscosasaqui();            }else{                throw new Exception("error");            }            Creo que el throws lo hiciste porque te marcó error, necesitas manejar la excepción            pero para eso usé try-catch        */        BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));                for(int x=0;x<10;x++){            System.out.print("Escribe un numero "+x + " ");            try{ // Necesitas manejar la excepción, para ello se usa try-catch                String cadena = entrada.readLine();                A[x] = Integer.parseInt(cadena);            }catch (IOException e){                System.out.println("Ocurrió un error: " + e);            }        }        return A;    }    public void Pares(){    // es necesario que devuelva algo?          int y;        for(y=0;y<10;y++){            if(A[y]%2==0){                System.out.println(A[y]);                B[y]=A[y];            }                        }    }    public void Imprimir(){        // Para recorrer un arreglo debes hacerlo elemento por elemento        // de esta manera solo se imprime la referencia al objeto:        System.out.println("La dirección del arreglo en la memoria es: "+B);        // de esta manera se imprimen los elementos        for(int i = 0; i<10; i++){            if(B[i]!=0)                System.out.println(""+B[i]);        }            }}   

Llamar.java


--- Código: Text ---public class Llamar{    public static void main(String []args){                     Arreglo obk=new Arreglo();            // Aquí tu habías definido un arreglo B, pero no lo ocupas            // ya tienes uno en el objeto Arreglo            obk.Leer();             obk.Pares();                obk.Imprimir();         }} 

Bueno... ojalá te sirva... y más que nada que trates de entenderlo.

Salu2.

m0skit0:

--- Cita de: "krentos8" ---public float Impares( float A[]){
float D[]=new float[10];
int x=0, w=0;
for(w=0;w<10;w++){
if(A[x]%2==0){
D[w++]=A[x];
}
}
--- Fin de la cita ---
krentos8, tu problema radica en que D[] está declarado dentro de Impares() y por tanto al finalizar este método, la memoria de D[] se libera y pierdes su contenido. Declárala en fuera del método y pásala por parámetro para que al salir siga manteniendo los valores.

Y USA LAS ETIQUETAS DE CÓDIGO

Salud y suerte.

silverfox:
Hola...


--- Código: Text --- int x=0, w=0;for(w=0;w<10;w++){if(A[x]%2==0){D[w++]=A[x];}  
Este código introduce los valores de A[x] en las posiciones pares del array D, comenzando por la posición 0.
Te recomendaría que no manipulases la variable de cuenta de un bucle for en el interior del propio bucle. Tu salud mental lo agradecerá cuando trates de depurar.


Suerte.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa