• Viernes 17 de Mayo de 2024, 04:18

Autor Tema:  problema con programa de arreglos  (Leído 3521 veces)

krentos8

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
problema con programa de arreglos
« en: Viernes 23 de Enero de 2009, 03:52 »
0
import java.io.*;
public class arreglo{
public int[]Leer()throws IOException{
BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
int A[]=new int[10];
int B[]=new int[10];
for(int x=0;x<10;x++){

System.out.print("Escribe un numero"+x);
A
  • =Integer.parseInt(entrada.readLine());

}
return A;
}
for(int x=0;x<10;x++){
if(x[y]%2==0)
}
no se como guardar los pares en otro arreglo

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: problema con programa de arreglos
« Respuesta #1 en: Viernes 23 de Enero de 2009, 09:10 »
0
Bienvenido al foro krentos8

Utiliza las etiquetas de código y así queda más bonito y más legible  ;)


Código: Java
  1. for(int x=0;x<10;x++){
  2.     if(x[y]%2==0)
  3. }
  4.  
Primero, no deberías declarar int x dentro de la inicialización del for. Hazlo fuera.

Segundo, la condición del if debería ser if(A
  • [/b]%2 == 0)[/i].

    Además, necesitas otro contador para el arreglo int B[10] que supongo es donde quieres guardar los números pares. Pongamos por ejemplo int y. Así obtendríamos:

    Código: Java
    1.  
    2. int x, y;
    3. y = 0;
    4. for(x=0;x<10;x++)
    5.     if(A[x]%2==0)
    6.         B[y++] = A[x];
    7.  
    8.  

    Salud

krentos8

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problema con programa de arreglos
« Respuesta #2 en: Viernes 23 de Enero de 2009, 13:25 »
0
Gracias por el tip mosquito, soy medio nuevo aun en esto de programar en llama.

krentos8

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problema con programa de arreglos
« Respuesta #3 en: Sábado 24 de Enero de 2009, 01:59 »
0
import java.io.*;
public class Arreglo{
public int[]Leer()throws IOException{
BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
int A[]=new int[10];
for(int x=0;x<10;x++){
System.out.print("Escribe un numero"+x);
A
  • =Integer.parseInt(entrada.readLine());

     }
return A;
}
public int Pares(int A[]){
   int B[]=new int[10];
   int x=0, y;
   for(y=0;y<10;y++){
      if(A
  • %2==0);

      B[y++]=A
  • ;

   }
    return (x);
   }
public void Imprimir(int []B){

      System.out.println("arreglo de los pares es:"+B);
}
}

import java.io.*;
public class Llamar{
   public static void main(String []args)throws IOException{
      Arreglo obk=new Arreglo();
      int B[]=new int[10];
      obk.Leer();
      obk.Imprimir(B);
   }
}
Ahora el problema que tengo es que solo me muestra un 0

icedTea

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: mx
    • Ver Perfil
    • http://willy-n-billy.blogspot.com
Re: problema con programa de arreglos
« Respuesta #4 en: Sábado 24 de Enero de 2009, 19:42 »
0
En la clase Llamar, declaras B, pero no le metes nada!. pues que quieres que te va imprimir?  :huh:
Tu if tiene un ; de más... si lo dejas así... te va a tomar todos los valores de A y te los pondrá en B
Cuando declaras una variable en un método, esta dura hasta que el método terminar... declaralas globales en Arreglo

Código: Text
  1. for(y=0;y<10;y++){
  2. if(A[x]%2==0);
  3. B[y++]=A[x];
  4. }
  5.  
  6.  


Salu2.  :hola:

krentos8

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problema con programa de arreglos
« Respuesta #5 en: Domingo 25 de Enero de 2009, 04:11 »
0
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
  • =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
  • %2==0){

    D[w++]=A
  • ;

   }
   }
   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

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: mx
    • Ver Perfil
    • http://willy-n-billy.blogspot.com
Re: problema con programa de arreglos
« Respuesta #6 en: Domingo 25 de Enero de 2009, 08:44 »
0
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
  1. for(i = 0; i<10; i++){
  2.    System.out.println("Par: "+ D[i]);
  3. }
  4.  

Sigue pensando...  ;)

icedTea

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: mx
    • Ver Perfil
    • http://willy-n-billy.blogspot.com
Re: problema con programa de arreglos
« Respuesta #7 en: Lunes 26 de Enero de 2009, 04:48 »
0
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
  1. import java.io.*;
  2. public class Arreglo{
  3.     // Declaré los arreglos de modo global, para que puedan ser
  4.     // usados por todos los métodos
  5.     int A[]=new int[10];
  6.     int B[]=new int[10];
  7.     public int[]Leer(){
  8.         /*
  9.             public int[] Leer() throws IOException{
  10.             lo cambié, al hacer tu método de esta manera le estás diciendo que
  11.             en algún lugar del método lanzaras TU MISMO la excepción,
  12.             la excepción se lanza de la siguiente manera:
  13.             throw new Exception("error");
  14.             esto lo harías de la siguiente forma:
  15.             if(todoBien){
  16.                 Hagomiscosasaqui();
  17.             }else{
  18.                 throw new Exception("error");
  19.             }
  20.             Creo que el throws lo hiciste porque te marcó error, necesitas manejar la excepción
  21.             pero para eso usé try-catch
  22.         */
  23.         BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));
  24.        
  25.         for(int x=0;x<10;x++){
  26.             System.out.print("Escribe un numero "+x + " ");
  27.             try{ // Necesitas manejar la excepción, para ello se usa try-catch
  28.                 String cadena = entrada.readLine();
  29.                 A[x] = Integer.parseInt(cadena);
  30.             }catch (IOException e){
  31.                 System.out.println("Ocurrió un error: " + e);
  32.             }
  33.         }
  34.         return A;
  35.     }
  36.     public void Pares(){    // es necesario que devuelva algo? 
  37.         int y;
  38.         for(y=0;y<10;y++){
  39.             if(A[y]%2==0){
  40.                 System.out.println(A[y]);
  41.                 B[y]=A[y];
  42.             }
  43.                
  44.         }
  45.     }
  46.     public void Imprimir(){
  47.         // Para recorrer un arreglo debes hacerlo elemento por elemento
  48.         // de esta manera solo se imprime la referencia al objeto:
  49.         System.out.println("La dirección del arreglo en la memoria es: "+B);
  50.         // de esta manera se imprimen los elementos
  51.         for(int i = 0; i<10; i++){
  52.             if(B[i]!=0)
  53.                 System.out.println(""+B[i]);
  54.         }
  55.        
  56.     }
  57. }
  58.  
  59.  
  60.  


Llamar.java

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


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

Salu2.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: problema con programa de arreglos
« Respuesta #8 en: Lunes 26 de Enero de 2009, 08:49 »
0
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
  • %2==0){

D[w++]=A
  • ;

}
}
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

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: problema con programa de arreglos
« Respuesta #9 en: Martes 27 de Enero de 2009, 17:57 »
0
Hola...

Código: Text
  1.  
  2. int x=0, w=0;
  3. for(w=0;w<10;w++){
  4. if(A[x]%2==0){
  5. D[w++]=A[x];
  6. }
  7.  
  8.  

Este código introduce los valores de A
  • 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.