SoloCodigo

Programación General => Java => Mensaje iniciado por: krentos8 en Viernes 23 de Enero de 2009, 03:52

Título: problema con programa de arreglos
Publicado por: krentos8 en Viernes 23 de Enero de 2009, 03:52
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
}
return A;
}
for(int x=0;x<10;x++){
if(x[y]%2==0)
}
no se como guardar los pares en otro arreglo
Título: Re: problema con programa de arreglos
Publicado por: m0skit0 en Viernes 23 de Enero de 2009, 09:10
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
Título: Re: problema con programa de arreglos
Publicado por: krentos8 en Viernes 23 de Enero de 2009, 13:25
Gracias por el tip mosquito, soy medio nuevo aun en esto de programar en llama.
Título: Re: problema con programa de arreglos
Publicado por: krentos8 en Sábado 24 de Enero de 2009, 01:59
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
     }
return A;
}
public int Pares(int A[]){
   int B[]=new int[10];
   int x=0, y;
   for(y=0;y<10;y++){
      if(A
      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
Título: Re: problema con programa de arreglos
Publicado por: icedTea en Sábado 24 de Enero de 2009, 19:42
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:
Título: Re: problema con programa de arreglos
Publicado por: krentos8 en Domingo 25 de Enero de 2009, 04:11
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
     }
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
    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
Título: Re: problema con programa de arreglos
Publicado por: icedTea en Domingo 25 de Enero de 2009, 08:44
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...  ;)
Título: Re: problema con programa de arreglos
Publicado por: icedTea en Lunes 26 de Enero de 2009, 04:48
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.
Título: Re: problema con programa de arreglos
Publicado por: m0skit0 en Lunes 26 de Enero de 2009, 08:49
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.
Título: Re: problema con programa de arreglos
Publicado por: silverfox en Martes 27 de Enero de 2009, 17:57
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
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.