elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Conocer buffer del flujo de datos (FileInputStream) en: 4 Diciembre 2008, 14:49 pm
Por ejemplo tienes un archivo que contiene "Hola mundo" en c:\holamundo.txt

al leero necesito declarar byte[] b = new byte[10] pero de esta forma yo se que van 10 bytes, ya que conozco el contenido, pero supongamos que el contenido es variable o desconocido, como tendria que hacer para poder manipularlo?

Gracias

Tienes la opción de ir leyendo línea a línea:

Código
  1. public void imprimirFichero(String fichero) throws IOException{
  2.                BufferedReader br = new BufferedReader(new FileReader(new File(fichero)));
  3.  
  4.                String linea = "";
  5.  
  6.                while((linea = br.readLine()) != null){
  7.                        System.out.println(linea);
  8.                }
  9.        }
  10.  

De esa forma lees una línea y puedes tratarla como quieras, sin necesidad de declarar un buffer.
2  Programación / Java / Re: Evaluar Variable cuando esta vacia en: 4 Diciembre 2008, 14:25 pm
Bueno, gracias   ;D

Es un poco complicado entender el manejo de Excepciones en Java para mi  :-\  (Aunque las excepciones en PL/SQL las entiendo perfectamente y se cuando debo y cuando no aplicarlas   ;)  ) yo que vengo de lenguajes puramente estructurados como C pero ahi estoy intentando.

Yo pensaba que podia evaluar el vacio de una variable tipo String con " "  pero veo que no. Igual me tomare este ejemplo enserio para poder continuar con mi aprendizaje... se que el codigo esta sumamente principiante pero soy autodidacta y apenas llevo menos de 1 semana tratando de relacionarme con Java y comprenderlo...

Igual, mil gracias   :-*    :-*    :-*

De nada :D

Lo primero que debes hacer es aprender que es todo lo relacionado con programación orientada a objetos. No es muy difícil, pero hay que tomárselo con calma.

Breve expliación de las excepciones:

¿Qué es una excepción? Es un objeto que normalmente (no siempre) se lanza automáticamente cuando hay un error y que puede ser encapsulado para controlarlo.

El bloque de control para tratar una excepción es este:

Código
  1. try{
  2.       //sentencias java
  3. }catch (Exception e){
  4.       //sentencias java
  5. }


Ese es el más típico. Captura una excepción de tipo "Exception" PERO! Todas descienden de ese tipo (repito importante aprender las bases de orientación a objetos), así que ahí estarían capturadas todas.

Además como ves en el catch se pueden poner las mismas sentencias que fuera, incluso otro try si quieres!!

Tal vez sea necesario diferenciar entre un error de números por ejemplo del resto de errores:

Código
  1. try{
  2.     //sentencias
  3. }catch(NumberFormatException nfex){
  4.    System.out.println(nfex.toString());
  5.    //sentencias
  6. }catch (Exception e){
  7.    //sentencias
  8. }
  9.  

Como puedes ver se puede clasificar el tipo de error que suelta y actuar según el caso. Se podría decir que es parecido aún switch (salvando las diferencias!).

¿Qué es nfex y la e? Es el nombre que se da al objeto creado. Al saltar la exceción se crea un objeto del tipo que fuese y ahí que darle un nombre. Así si salta uno del tipo NumberFormatException ese objeto se llamará nfex y podré usarlo como ves arriba. Con la "e" lo mismo, es el nombre para el resto de errores posible.

Además esa estructura tiene otro posible uso:

Código
  1. try{
  2.     //code
  3. }catch(Exception e){
  4.     //code
  5. }finally{
  6.    //code
  7. }
  8.  

Puedes ver que he añadido "finally". Ese bloque se ejecutará SIEMPRE, tanto si se lanzó la excepción como si no, es importante recordarlo. ¿Para qué es útil? Por ejemplo para cuando se está tratando ficheros y surge una excepción que va a hacer abortar el fichero. Bien pues ahí dentro puedes cerrar el fichero o lo que creas que sea necesario.

Recuerda que si pones el bloque finally (solo se puede poner un bloque finally) siempre se ejecutará, tanto si salta excepción como si no.

PD: algo totalmente imprescindible es acostumbrarse a usar la API de java, la documentación. Acá la tienes para la versión 1.6, no se cual tendrás instalada:

http://java.sun.com/javase/6/docs/api/

Nota rápida: Todo lo que funciona por defecto en java está includio en el paquete java.lang, tal vez sea útil echarle un vistazo y ver que hay dentro. Por ejemplo está la clase String, si no estuviese tendrías que estar importandolo siempre.
3  Programación / Java / Re: Evaluar Variable cuando esta vacia en: 4 Diciembre 2008, 01:37 am
Puedes probar con esto

Código
  1. if ( palabra.length() == 0) {
  2. System.out.println("Debiste poner algo");
  3. } else {
  4. Verdura.naranja(palabra);
  5. }
  6.  

Como han comentado arriba en java los strings deben compararse con equals. Los caracteres especiales llevan la barra invertida delante.

\n salto de linea
\t tabulado

así unos cuantos, esos son los más útiles que recuerdo xD

Por otra parte nunca va a ejecutar esto:

Código
  1. public static int naranja(int numeral) {                                                                                                                    
  2.  
  3.        System.out.println("Respuesta es " + numeral+(numero*numero1));
  4.  
  5. return 0;
  6. }
  7.  

¿Por qué? Porque no has hecho una conversión a número antes. Cuando llamas a naranja(palabra) siempre va a llamar al otro método porque palabra es un objeto de tipo string, tenga el valor que tenga.

Para sacar el valor entero de un string puedes usar esto:

Código
  1. int num = Integer.parseInt(palabra);
  2.  

En caso de que palabra no sea un número entonces lanza una excepción, esto puede ser útil. Yo cambiaría tu código así:

Código
  1. import java.util.*;                                                                                                                                          
  2. import java.io.*;                                                                                                                                            
  3.  
  4. public class Sol {                                                                                                                                          
  5.  
  6.        public static String palabra;                                                                                                                        
  7.  
  8.        public static void main(String[] args) throws IOException {                                                                                          
  9.  
  10.                BufferedReader a = new BufferedReader(new InputStreamReader(System.in));                                                                    
  11.  
  12.                int numeral = 15;                                                                                                                            
  13.  
  14.                Verdura.naranja(numeral);                                                                                                                    
  15.  
  16.                System.out.println("Inserta palabra");                                                                                                      
  17.                palabra = a.readLine();                                                                                                                      
  18.                int num = 0;                                                                                                                                
  19.  
  20.                if ( palabra.length() == 0 ) {                                                                                                              
  21.                        System.out.println("Debiste poner algo");                                                                                            
  22.                } else {                                                                                                                                    
  23.                       try{                                                                                                                                  
  24.                               num = Integer.parseInt(palabra);                                                                                              
  25.                               Verdura.naranja(num);                                                                                                        
  26.                       }catch (Exception nfex){                                                                                                              
  27.                               //si salta excepcion es porque no era un numero y se ejecuta el otro metodo                                                  
  28.                               Verdura.naranja(palabra);                                                                                                    
  29.                       }                                                                                                                                    
  30.                }                                                                                                                                            
  31.        }                                                                                                                                                    
  32. }                                                                                                                                                            
  33.  
  34. class Verdura {                                                                                                                                              
  35.  
  36.        private static int numero = 10;                                                                                                                      
  37.        private static int numero1 = 20;                                                                                                                    
  38.  
  39.        public static int naranja(int numeral) {
  40.                System.out.println("Respuesta es " + numeral+(numero*numero1));
  41.                return 0;
  42.        }
  43.  
  44.        public static void naranja(String catarata) {
  45.  
  46.                try {
  47.  
  48.                        PrintWriter b = new PrintWriter(new FileWriter("archivo.txt"));
  49.  
  50.                        b.println(numero);
  51.                        b.println(numero1);
  52.                        b.close();
  53.                        System.out.println("Se has escrito correctamente");
  54.                } catch (IOException e) {
  55.                        System.out.println("No se puede crear el archivo");
  56.                }
  57.        }
  58. }
  59.  
4  Programación / Java / Re: Necesito una idea sobre como hacer un ejercicio en: 4 Diciembre 2008, 01:36 am
¿Es obligatorio que sea un array?

En java existe la clase java.util.Vector, que te ayuda a manejarte con arrayas, pero de tamaño variable por así decirlo.

Tienes dos posibilidades, o un vector si quieres que el tamaño vaya cambiando según metes nuevos productos o un tamaño fijo, por lo que solo puedes comprar (o lo que sea) una cantidad máxima fija.
5  Foros Generales / Foro Libre / Re: Sus escritorios en: 3 Diciembre 2008, 15:06 pm
Acá mi escritorio. Slackware 12.1 con kde4.1.3

6  Programación / Java / Re: error codigo matriz en: 3 Diciembre 2008, 12:39 pm
que cosa más rara! y tengo que añadir fea, si fuese tu profesor te suspendía. deberías aprender a tabular correctamente.

Por otra parte... el problema está aquí:

Código
  1. //Buscar valor maximo                                                                                                                        
  2.                for(i=0;i<N;i++){                                                                                                                
  3.                    Max=0;                                                                                                                                  
  4.                    aux=0;                                                                                                                                  
  5.                    for(h=0;h<PWN.length;h++){                        //<-- AQUI!!
  6.                            if(PWM[h][i]>Max){                                                                                                              
  7.                                    Max=PWM[h][i];                                                                                                          
  8.                                    aux=h;                                                                                                                  
  9.                            }                                                                                                                                
  10.                    }                                                                                                                                        
  11.                    //Mostrar valor maximo                                                                                                                  
  12.                    if (num==0){
  13.                            System.out.print("El prototipus resultant es: ");
  14.                            num++;
  15.                    }
  16.                    switch(aux){
  17.                            case 0:
  18.                                    System.out.print("A ");
  19.                                    break;
  20.                            case 1:
  21.                                    System.out.print("C ");
  22.                                    break;
  23.  
  24.                            case 2:
  25.                                    System.out.print("G ");
  26.                                    break;
  27.                            case 3:
  28.                                    System.out.print("T ");
  29.                                    break;
  30.                        }
  31.                }
  32.  

Habías puesto un valor incorrecto que se salía de rango. Parece que es algo relacoinado con el adn, un típico problema de programación? a mí no me suena xD
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines