Problema programa simple: NULL

Iniciado por salvagym, 24 Febrero 2013, 12:58 PM

0 Miembros y 1 Visitante están viendo este tema.

salvagym

Hola soy nuevo en esto de la programación y estoy estudiando ingenieria informatica, me ha mandado hacer un ejercicio:  dado un fichero de texto de entrada.txt, generar tres ficheros de salida llamados salida1 salida2 salida3 de forma que en el primer fichero alojaremos las palabras que solo contengan consonantes en el segundo las palabras que tengas solo vocales en el tercero las plabaras k tengas palabras vocales y consonantes. tambien que se pueda ejecutar por linea de comando. MI PROBLEMA: es que al ejecutar el resultado es: run:
ERROR: null
java.lang.NullPointerException
   at ficheros1.Fichero1.main(Fichero1.java:36)
BUILD SUCCESSFUL (total time: 0 seconds)

package ficheros1;

import java.io.*;

public class Fichero1 {

    public static void main(String[] args)throws Exception {
       
        FileReader fr = null;BufferedReader br = null;
        FileWriter fw1 = null;BufferedWriter bw1 = null;PrintWriter pw1 = null;//consonantes
        FileWriter fw2 = null;BufferedWriter bw2 = null;PrintWriter pw2 = null;//vocales
        FileWriter fw3 = null;BufferedWriter bw3 = null;PrintWriter pw3 = null;//Híbrido
        String caracter;
       
        try{
            fr=new FileReader("C:/PruebasNetbeans/entrada.txt");
            br=new BufferedReader(fr);
            fw1=new FileWriter ("C:/PruebasNetbeans/salida1.txt");
            fw2=new FileWriter ("C:/PruebasNetbeans/salida2.txt");
            fw3=new FileWriter ("C:/PruebasNetbeans/salida3.txt");
            pw1=new PrintWriter (fw1);
            pw2=new PrintWriter (fw2);
            pw3=new PrintWriter (fw3);
           
            caracter=br.readLine();
            Palabra pal = null;
            while(caracter != null){
               
                if (pal.soloVocales(caracter)){
                    pw2.print(caracter);
                }
                if (pal.soloConsonantes(caracter)){
                    pw1.print(caracter);
                }
                else if(pal.soloConsonantes(caracter)&&pal.soloVocales(caracter)){
                    pw3.print(caracter);
                }
            }
        }catch (Exception e) {
            System.out.println("ERROR: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
GRACIAS DE ANTEMANO! :D :rolleyes:

BatchianoISpyxolo

#1
Código (java) [Seleccionar]

caracter=br.readLine();
           Palabra pal = null;
           while(caracter != null){
               
               if (pal.soloVocales(caracter)){
                   pw2.print(caracter);
               }
               if (pal.soloConsonantes(caracter)){
                   pw1.print(caracter);
               }
               else if(pal.soloConsonantes(caracter)&&pal.soloVocales(caracter)){
                   pw3.print(caracter);
               }
           }


Fíjate que declararas pal pero no creas una instancia y luego tratas a acceder a un método de instancia...

Código (java) [Seleccionar]
caracter=br.readLine();
           Palabra pal = new Palabra();
           while(caracter != null){
               
               if (pal.soloVocales(caracter)){
                   pw2.print(caracter);
               }
               if (pal.soloConsonantes(caracter)){
                   pw1.print(caracter);
               }
               else if(pal.soloConsonantes(caracter)&&pal.soloVocales(caracter)){
                   pw3.print(caracter);
               }
           }


PD: con readLine lees hasta el '\n' no char a char.
Puede que desees aprender a programar desde 0: www.espascal.es

salvagym

Tienes toda la razon, se nota que me queda mucho por aprender.
Acabo de probar el programa con la modificación pero ahora cuando ejecuto se me queda el run ejecutando sin dar ninguna señal ni siquiera que ha acabado. Lo paro, miro los archivos de salida y no hay nada PD: en el archivo de entrada hay escrito 'aaaeio' por lo que deberia copiarme la palabra en el archivo 2 de salida.

Adjunto lo que tengo en otra clase Palabra

public  boolean soloVocales(String caracter)throws Exception{
        if ((("a".contains(caracter))||("e".contains(caracter))||("i".contains(caracter))||
             ("o".contains(caracter))||("u".contains(caracter))||("A".contains(caracter))||
             ("E".contains(caracter))||("I".contains(caracter))||("O".contains(caracter))||
             ("U".contains(caracter)))){return true;
        }else{return false;}
       
    }
   
    public  boolean soloConsonantes(String caracter){
         if((!("a".equals(caracter))||!("e".equals(caracter))||!("i".equals(caracter))||
             !("o".equals(caracter))||!("u".equals(caracter))||!("A".equals(caracter))||
             !("E".equals(caracter))||!("I".equals(caracter))||!("O".equals(caracter))||
             !("U".equals(caracter)))){return true;
             
         }
        return false;
    }

son los metodos para ver los caracteres del string. Tampoco se si estan bien :S

Gracias por la ayuda BatchianoISpyxolo  :D