Buscar

Uso de vector en java


 
 Old 25 jun 2007, 23:59   #1 (permalink)  
Miembro
 
Avatar de Seek-And-Destroy
 
Registrado: junio 2006
Ubicación: Chile
Mensajes: 43

Predeterminado Uso de array en java

Hola a todos......

Tengo que hacer un programilla en Java y tengo que definir un vector cuyo tamaño debe ser ingresado por teclado, es decir necesito que el tamaño del vector sea variable.

No tengo claro si esto es posible en Java y si lo es, alguien podria darme alguna pista? ? ?

este es un trozo del codigo:


Código:
import java.io.*;
Código:
public class Pila extends Principal{
int []a; int tope; String linea; BufferedReader ingreso=new BufferedReader(new InputStreamReader(System.in)); /** Creates a new instance of Pila */ public Pila(int tam) throws PilaException{ if(tope>=-1 && tope<=tam && tam>=0){ this.a=new int[tam]; this.tope=-1; } else{ throw(new PilaException()); } } public boolean Vacia(){ return(tope==-1); } public boolean Llena(){ return(tope==a.length); } public void Poner(int dato){ System.out.println("Ingrese un dato:"); try{ linea = ingreso.readLine(); dato = Integer.parseInt(linea); }catch (Exception ex) { System.out.println("No es un número"); Poner(dato);} a[++tope]=dato; } public void Sacar(){ tope--; } public void Cima(){ System.out.println("Ultimo dato: "+a[tope]); }
}


Editado por Felipeaml en 28 jun 2007 a las 22:51.

Seek And Destroy
Seek-And-Destroy is offline   Citar y responder
 
 Old 28 jun 2007, 06:19   #2 (permalink)  
Miembro
 
Avatar de Seek-And-Destroy
 
Registrado: junio 2006
Ubicación: Chile
Mensajes: 43

Predeterminado Re: Uso de vector en java

Es mi idea o a este foro entran muy pocos programadores???

Seek And Destroy
Seek-And-Destroy is offline   Citar y responder
 
 Old 28 jun 2007, 06:36   #3 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: Uso de vector en java

Cita:
Felipeaml escribió: Ver post
Es mi idea o a este foro entran muy pocos programadores???

Nop, no es tu idea, por desgracia es cierto, somos pocos los que entramos y yo no puedo ayudarte, dado que no se Java y no me gusta...

Espero que encuentres una respuesta pronto.

Saludines

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder
 
 Old 28 jun 2007, 06:44   #4 (permalink)  
Miembro
 
Avatar de Seek-And-Destroy
 
Registrado: junio 2006
Ubicación: Chile
Mensajes: 43

Predeterminado Re: Uso de vector en java

Cita:
the_ma3x escribió: Ver post
Nop, no es tu idea, por desgracia es cierto, somos pocos los que entramos y yo no puedo ayudarte, dado que no se Java y no me gusta...

Espero que encuentres una respuesta pronto.

Saludines
a mi tampoco me gusta java pero es un trabajo para la universidad..........

Gracias de todos modos

Seek And Destroy
Seek-And-Destroy is offline   Citar y responder
 
 Old 28 jun 2007, 11:32   #5 (permalink)  
Miembro activo
 
Avatar de wizard full power
 
Registrado: julio 2004
Ubicación: K-Pax
Mensajes: 287

Predeterminado Re: Uso de vector en java

Cita:
Felipeaml escribió: Ver post
Hola a todos......


Tengo que hacer un programilla en Java y tengo que definir un vector cuyo tamaño debe ser ingresado por teclado, es decir necesito que el tamaño del vector sea variable.

No tengo claro si esto es posible en Java y si lo es, alguien podria darme alguna pista? ? ?

este es un trozo del codigo:


Código:
import java.io.*;
Código:
public class Pila extends Principal{ int []a; int tope; String linea; BufferedReader ingreso=new BufferedReader(new InputStreamReader(System.in)); /** Creates a new instance of Pila */ public Pila(int tam) throws PilaException{ if(tope>=-1 && tope<=tam && tam>=0){ this.a=new int[tam]; this.tope=-1; } else{ throw(new PilaException()); } } public boolean Vacia(){ return(tope==-1); } public boolean Llena(){ return(tope==a.length); } public void Poner(int dato){ System.out.println("Ingrese un dato:"); try{ linea = ingreso.readLine(); dato = Integer.parseInt(linea); }catch (Exception ex) { System.out.println("No es un número"); Poner(dato);} a[++tope]=dato; } public void Sacar(){ tope--; } public void Cima(){ System.out.println("Ultimo dato: "+a[tope]); } }



¿Cuando hablas de "vector" te refieres a un "array" o a un vector propiamente? Es que no entiendo bien si lo que buscas es crear un array que vaya dimensionándose según el valor que el usuario introduzca por teclado, o bien dibujar un vector o puntero a memoria dimensionado según la variable (lo que me parece más estrambótico, dado que este tipo de puntos se suelen hacer para programas muy avanzados y con unas características específicas).

Si es constituir un array que varíe su dimensión dinámicamente según el valor introducido por teclado por el usuario -como creo- vayamos por partes, y verás que no tiene mucho misterio la cosa.
Primero constato que defines el array abierto "int []a;" y le asignas el tamaño "this.a=new int[tam];" tras crearlo con el comando new. Perfecto. Sin embargo en el código que expones no veo dónde llamas a Pila para tal labor, ni donde queda definido el valor de "tope". Se que es solo una parte del código, por lo que mejor te creo yo un ejemplo básico y ya tú lo aplicas sobre el tuyo ok?.

Básicamente es:

1. Creamos el array.
2. Tomamos por teclado el tamaño del mismo.,
3. Se lo asignamos.

Ejemplo:

Código:
int[] arrayPropio;
Código:
import java.io.*;
public class LecturaTeclado 
{
 public static void main(String Arg[ ]) throws IOException
 {     
  BufferedReader in = new BufferedReader(new 
        InputStreamReader(System.in));
  int num;
  System.out.print("Ingresar valor: ");
  num = Integer.parseInt(in.readLine( ));
  System.out.println("Valor ingresado: " + num );
 }
}

Código:
int[] arrayPropio = new int[valorTeclado];

La variable "valorTeclado" debe estar definida dentro de la clase principal. como podrás imaginar, y es precisamente el valor que tiene la variable "num" obtenida en la clase LecturaTeclado.



Si te referías a vectores que se dimensionen y no a arrays, házmelo saber y nos metemos en el ajo


Saludos... y mis prósperos deseos que no haya tanto calor allí como hace por aquí. ¡¡Viva el aire acondicionado!!

El dulce tierno de tu boca...
Un suspiro...
Tú... tu último llanto en mi hombro...
La maraña roja nos embadurnaba el cuerpo abatido,
la piel se nos tersó entre jirones afilados,
y tu lazo se desnudó ante mis pupilas de dolor.
wizard full power is offline   Citar y responder
 
 Old 28 jun 2007, 12:18   #6 (permalink)  
Miembro activo
 
Avatar de Flipy1988
 
Registrado: marzo 2005
Ubicación: Desaparecido
Mensajes: 150

Predeterminado Re: Uso de vector en java

Yo solo uso c por eso te comento que buscques si puedes definir un memoria dinamica ya que se usa mucho para los vectoes, te lo explico un poco como c pero para que lo entiedas.

1º sacamos por pantalla "Cuantas posiciones tiene que tener el vercto"
2º Una vez que lo tienes normalmente se tiene un puntero el cual usas para pedir la memoria dinamica en c es algo asi
puntero = (tipo_variable *)calloc o malloc (nº de posiciones * tipo_varible);
3ºLuego cuando dejas de necesitar es normalmente obligatorio liberar la memoria usada

Solo espero que al morir, en mi bolsillo tenga dos monedas de oro para poder pagar al barquero
Flipy1988 is offline   Citar y responder
 
 Old 28 jun 2007, 22:44   #7 (permalink)  
Miembro
 
Avatar de Seek-And-Destroy
 
Registrado: junio 2006
Ubicación: Chile
Mensajes: 43

Predeterminado Re: Uso de vector en java

Muchas gracias por la ayuda (era un array, no use la palabra mas adecuada).

solucione el problema justo antes de revisar las respuestas:
Código:
import java.io.*;
    public class Pila {
    private int []a;
    private int tope;
    private int tam;
    String linea;
    BufferedReader ingreso=new BufferedReader(new InputStreamReader(System.in));
    /** Creates a new instance of Pila */
    public Pila(int tam)throws Pilaexception{
            System.out.println("Ingrese tamaño de la pila: ");   
     try{
       linea = ingreso.readLine(); tam = Integer.parseInt(linea);
       }catch (Exception ex) { System.out.println("No es un número");}
        if(tope<=tam && tam>=0 && tope>=0){
            this.tope=-1;
            this.a=new int [tam];
        }
        else{
            throw (new Pilaexception());
        }
    }
    public void poner(int dato){    
     tope++;
        System.out.println("Ingrese un dato: ");   
     try{
       linea = ingreso.readLine(); dato = Integer.parseInt(linea);
       }catch (Exception ex) { System.out.println("No es un número");}
     try{
         a[tope]=dato;
     }catch (Exception ex){System.out.println(":::Dato fuera de la pila, la pila ya esta llena:::");
     tope--;}
}
public void sacar(){
       tope--;
       try{
           a[tope]=a[tope];
       }catch (Exception ex){System.out.println(":::No se pueden sacar mas datos, pila vacia:::");
       tope++;
       a[tope]=0;}
}
public void cima(){
    try{
        System.out.println("Dato en la cima: "+a[tope]);
    }catch (Exception ex){System.out.println(":::La cima esta fuera del rango de la pila:::");}
}
public static void main(String arg[])throws Pilaexception{
       Menu m=new Menu();
       m.Menu();
}
}

de todos modos ahora me surge otro problema:

necesito aplicar mi propio manejo de errores y en este caso todabia no logro que se aplique antes que se apliquen las exceptiones predeterminadas de java.

si es que alguien me puede explicar que modifico para que se active mi propia exception (Pilaexception) antes que la predeterminada de java....

se supone debo aplicarla cuando se intente insertar un dato fuera del tamaño del array...........

Seek And Destroy
Seek-And-Destroy is offline   Citar y responder
 
 Old 29 jun 2007, 09:50   #8 (permalink)  
Miembro activo
 
Avatar de wizard full power
 
Registrado: julio 2004
Ubicación: K-Pax
Mensajes: 287

Predeterminado Re: Uso de vector en java

Cita:
Felipeaml escribió: Ver post
Muchas gracias por la ayuda (era un array, no use la palabra mas adecuada).


solucione el problema justo antes de revisar las respuestas:

Código:
import java.io.*;
Código:
public class Pila {
private int []a; private int tope; private int tam; String linea; BufferedReader ingreso=new BufferedReader(new InputStreamReader(System.in)); /** Creates a new instance of Pila */ public Pila(int tam)throws Pilaexception{ System.out.println("Ingrese tamaño de la pila: "); try{ linea = ingreso.readLine(); tam = Integer.parseInt(linea); }catch (Exception ex) { System.out.println("No es un número");} if(tope<=tam && tam>=0 && tope>=0){ this.tope=-1; this.a=new int [tam]; } else{ throw (new Pilaexception()); } } public void poner(int dato){ tope++; System.out.println("Ingrese un dato: "); try{ linea = ingreso.readLine(); dato = Integer.parseInt(linea); }catch (Exception ex) { System.out.println("No es un número");} try{ a[tope]=dato; }catch (Exception ex){System.out.println(":::Dato fuera de la pila, la pila ya esta llena:::"); tope--;} } public void sacar(){ tope--; try{ a[tope]=a[tope]; }catch (Exception ex){System.out.println(":::No se pueden sacar mas datos, pila vacia:::"); tope++; a[tope]=0;} } public void cima(){ try{ System.out.println("Dato en la cima: "+a[tope]); }catch (Exception ex){System.out.println(":::La cima esta fuera del rango de la pila:::");} } public static void main(String arg[])throws Pilaexception{ Menu m=new Menu(); m.Menu(); } }


de todos modos ahora me surge otro problema:


necesito aplicar mi propio manejo de errores y en este caso todabia no logro que se aplique antes que se apliquen las exceptiones predeterminadas de java.

si es que alguien me puede explicar que modifico para que se active mi propia exception (Pilaexception) antes que la predeterminada de java....


se supone debo aplicarla cuando se intente insertar un dato fuera del tamaño del array...........





Para poder crear tu propio motor de errores en Java, debes meter (o anidar como es más técnico decir) tus excepcones dentro del try. Es decir, vas creando excepciones según el error que desees evaluar, y haces saltar un mensaje u otro.

Digamos que el pseudocódigo te quedaría algo así (ejemplo ficiticio):

Código:
leerFichero {    try {           abrir el fichero;           determinar su tamaño;           asignar suficiente memoria;           leer el fichero a la memoria;           cerrar el fichero;    } catch (falloAbrirFichero) {        hacerAlgo;    } catch (falloDeterminacionTamaño) {        hacerAlgo;    } catch (falloAsignaciondeMemoria) {        hacerAlgo;    } catch (falloLectura) {        hacerAlgo;    } catch (falloCerrarFichero) {        hacerAlgo;    }} 

Como puedes ver vamos creando un "catch" o excepción según el error que queremos detectar de forma singular para darle nuestro tratamiento particular.
Te recomiendo que uses también el comando "finally", que libera y cierra la memoria y los ficheros abiertos respectivamente cuando se produce un error capturado.

Ánimo con el código

El dulce tierno de tu boca...
Un suspiro...
Tú... tu último llanto en mi hombro...
La maraña roja nos embadurnaba el cuerpo abatido,
la piel se nos tersó entre jirones afilados,
y tu lazo se desnudó ante mis pupilas de dolor.
wizard full power is offline   Citar y responder
 
 Old 29 jun 2007, 20:47   #9 (permalink)  
Miembro
 
Avatar de Seek-And-Destroy
 
Registrado: junio 2006
Ubicación: Chile
Mensajes: 43

Predeterminado Re: Uso de vector en java

Muchas gracias......

ya resolvi el problema, termine el trabajo!!!!! al fin..........

Seek And Destroy
Seek-And-Destroy is offline   Citar y responder

« Visual Basic | Añadir imagen de fondo en FLTK »

Herramientas
Estilo


 

Tema Iniciado por Foro Respuestas Último mensaje
Java (TM) 2 Platform eliseo007 Internet 3 27 ago 2008 06:28
actualizaciones java kerax Software 1 21 may 2007 22:09
deseo quitar el java de fedora cosmonauta Configuración 1 19 ago 2005 19:09
Vulnerabilidad en componente Java de Internet Explorer JaCop Seguridad 0 06 jul 2005 08:42
Salto de mecanismos de seguridad del Sandbox en Java Web Start / Sun JRE wanm28 Seguridad 0 19 jun 2005 08:02



Buscar