//Importo las utilidades de java a utilizar
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StringReader;
public class Principal {
//Nombre del archivo de la tienda
private static final String nombretienda="tienda.txt";
//Pongo las Variables que voy a utilizar para leer y escribir los archivos
private static Scanner teclado;
public static void main(String[] args) {
teclado = new Scanner(System.in);
//creo los string de respuestas
//El string no puede estar vacio o dará error
String veredicto="cliente";
String formato = "cd";
String Respuesta;
String repetir="no";
//Pido a el dependiente que introduczca una opción
//creo un bucle por si se equivoca la respuesta
do{
System.out.println("Esperando orden:");
System.out.println("Crear cliente =crear");
System.out.println("Listar cliente =Listar");
System.out.println("Eliminar cliente =Eliminar");
System.out.println("Salir");
Respuesta=teclado.nextLine();
if(Respuesta.equalsIgnoreCase("eliminar")){
//pido el nombre del cliente que se va a eliminar
System.out.println("introduzca el nombre del cliente a eliminar:");
Cliente.setNombre(teclado.nextLine());
System.out.println("El cliente: "+Cliente.getNombre()+" ha sido eliminado con exito");
}else if(Respuesta.equalsIgnoreCase("Salir")){
System.out.println("Gracias por utilizar la aplicación");
//Con esto la aplicación se terminará
System.exit(0);
}else if(Respuesta.equalsIgnoreCase("crear")){
//PREGUNTO QUE SE QUIERE CREAR
//Si se equivoca se crea un bucle y se repite la respuesta
do{
System.out.println("Que quiere Crear");
System.out.println("Cliente");
System.out.println("Musica");
System.out.println("Venta");
System.out.println("Salir");
veredicto=teclado.nextLine();
}while(!veredicto.equalsIgnoreCase("cliente")&&!veredicto.equalsIgnoreCase("Musica")&&!veredicto.equalsIgnoreCase("Venta")&&!veredicto.equals("salir"));
if (veredicto.equalsIgnoreCase("Cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println("Introduzca el nombre del cliente:");
Cliente.setNombre(teclado.nextLine());
System.out.println("El cliente "+Cliente.getNombre()+" Ha sido creado y agregado a la lista");
do{
//Pido que tipo de formato va a vender
System.out.println("Introduzca el formato de musica");
System.out.println("Formatos disponibles:");
System.out.println("Vinilo");
System.out.println("CD");
System.out.println("Cassete");
System.out.println("salir");
formato=teclado.nextLine();
}while(!formato.equalsIgnoreCase("vinilo")&&!formato.equalsIgnoreCase("cd")&&!formato.equalsIgnoreCase("cassete")&&!formato.equals("salir"));
}else if(veredicto.equalsIgnoreCase("musica")){
//pido que tipo de formato va a vender
do{
System.out.println("introduzca el formato de musica");
System.out.println("Formatos disponibles:");
System.out.println("Vinilo");
System.out.println("CD");
System.out.println("Cassete");
System.out.println("salir");
formato=teclado.nextLine();
}while(!formato.equalsIgnoreCase("vinilo")&&!formato.equalsIgnoreCase("cd")&&!formato.equalsIgnoreCase("cassete")&&!formato.equals("salir"));
}else if(veredicto.equalsIgnoreCase("venta")){
//pido el nombre del cliente que se va a eliminar
System.out.println("introduzca el nombre del cliente al que se va a vender:");
Cliente.setNombre(teclado.nextLine());
}else if(veredicto.equalsIgnoreCase("Salir")){
System.out.println("Gracias por utilizar la aplicación");
//Con esto la aplicación se terminará
System.exit(0);
do{
System.out.println("Que articulo se va ha llevar:");
formato=teclado.nextLine();
}while(!formato.equalsIgnoreCase("vinilo")&&!formato.equalsIgnoreCase("cd")&&!formato.equalsIgnoreCase("cassete")&&!formato.equals("salir"));
System.out.println("El cliente: "+Cliente.getNombre()+" es ha llevado"+formato);
}
if (formato.equalsIgnoreCase("vinilo")){
System.out.println("Vinilo");
System.out.println("Introduzca el titulo de la obra:");
Vinilo.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
Vinilo.setautor(teclado.nextLine());
System.out.println("Y a comprado un vinilo con el titulo "+Vinilo.getTitulo());
System.out.println("Quiere hacer algo más");
repetir=teclado.nextLine();
}else if(formato.equalsIgnoreCase("CD")){
System.out.println("Cd");
System.out.println("Introduzca el titulo de la obra:");
CD.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
CD.setautor(teclado.nextLine());
System.out.println("Y a comprado un CD con el titulo "+CD.getTitulo());
}else if(formato.equalsIgnoreCase("CASSETE")){
System.out.println("cassete");
System.out.println("Introduzca el titulo de la obra:");
cassete.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
cassete.setautor(teclado.nextLine());
System.out.println("Y a comprado un Cassete con el titulo "+cassete.getTitulo());
}else if(formato.equalsIgnoreCase("Salir")){
System.out.println("Gracias por utilizar la aplicación");
//Con esto la aplicación se terminará
System.exit(0);
}
}else if(Respuesta.equalsIgnoreCase("listar")){
//pregunto que se va a listar y sus posibles respuestas
do{
System.out.println("Que se listará:");
System.out.println("Cliente");
System.out.println("Musica");
System.out.println("Venta");
System.out.println("Salir");
veredicto=teclado.nextLine();
}while(!veredicto.equalsIgnoreCase("cliente")&&!veredicto.equalsIgnoreCase("Musica")&&!veredicto.equalsIgnoreCase("Venta")&&!veredicto.equals("salir"));
if (veredicto.equalsIgnoreCase("Cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println("Introduzca el nombre del cliente:");
Cliente.setNombre(teclado.nextLine());
System.out.println("El cliente "+Cliente.getNombre()+" Ha sido creado y agregado a la lista");
//Pido que tipo de formato va a vender
System.out.println("Introduzca el formato de musica");
System.out.println("Formatos disponibles:");
System.out.println("Vinilo");
System.out.println("CD");
System.out.println("Cassete");
System.out.println("salir");
formato=teclado.nextLine();
}else if(veredicto.equalsIgnoreCase("musica")){
//pido que tipo de formato va a vender
do{
System.out.println("introduzca el formato de musica");
System.out.println("Formatos disponibles:");
System.out.println("Vinilo");
System.out.println("CD");
System.out.println("Cassete");
System.out.println("salir");
formato=teclado.nextLine();
}while(!formato.equalsIgnoreCase("vinilo")&&!formato.equalsIgnoreCase("cd")&&!formato.equalsIgnoreCase("cassete")&&!formato.equals("salir"));
}else if(veredicto.equalsIgnoreCase("venta")){
//pido el nombre del cliente que se va a eliminar
System.out.println("introduzca el nombre del cliente al que se va a vender:");
Cliente.setNombre(teclado.nextLine());
}else if(veredicto.equalsIgnoreCase("Salir")){
System.out.println("Gracias por utilizar la aplicación");
//Con esto la aplicación se terminará
System.exit(0);
do{
System.out.println("Que articulo se va ha llevar:");
formato=teclado.nextLine();
}while(!formato.equalsIgnoreCase("vinilo")&&!formato.equalsIgnoreCase("cd")&&!formato.equalsIgnoreCase("cassete"));
System.out.println("El cliente: "+Cliente.getNombre()+" es ha llevado"+formato);
}
if (formato.equalsIgnoreCase("vinilo")){
System.out.println("Vinilo");
System.out.println("Introduzca el titulo de la obra:");
Vinilo.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
Vinilo.setautor(teclado.nextLine());
System.out.println("Y a comprado un vinilo con el titulo "+Vinilo.getTitulo());
}else if(formato.equalsIgnoreCase("CD")){
System.out.println("Cd");
System.out.println("Introduzca el titulo de la obra:");
CD.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
CD.setautor(teclado.nextLine());
System.out.println("Y a comprado un CD con el titulo "+CD.getTitulo());
}else if(formato.equalsIgnoreCase("CASSETE")){
System.out.println("cassete");
System.out.println("Introduzca el titulo de la obra:");
cassete.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
cassete.setautor(teclado.nextLine());
System.out.println("Y a comprado un Cassete con el titulo "+cassete.getTitulo());
}else if(formato.equalsIgnoreCase("Salir")){
System.out.println("Gracias por utilizar la aplicación");
//Con esto la aplicación se terminará
System.exit(0);
}
}
//pregunto que se va a CREAR y sus posibles respuestas
}while(!Respuesta.equalsIgnoreCase("Listar")&&!Respuesta.equalsIgnoreCase("crear")&&!Respuesta.equalsIgnoreCase("Eliminar")&&!Respuesta.equalsIgnoreCase("Salir")&&repetir.equalsIgnoreCase("si")&&!repetir.equalsIgnoreCase("No"));
//Vamos a guardar el nombre del cliente y su compra
try{ String lineaArchivo;
String fuenteArchivo=Cliente.getNombre();
BufferedReader fuenteSalida;
String fuentevinilo=Vinilo.getTitulo();
String fuenteCD=CD.getTitulo();
String fuentecassete=cassete.getTitulo();
fuenteSalida = new BufferedReader(
new StringReader(fuenteArchivo));
// Se define un stream de salida (PrintWriter)
// que tomara los datos de memoria (BufferedWriter)
// y los escribira en un archivo (FileWriter)
PrintWriter archivoSalida;
archivoSalida = new PrintWriter(
new BufferedWriter(
//desde este fichero se podrá ver el nombre y articulo ademas de poderse borrar facilmente
new FileWriter("C:Tienda.txt")));
while ((lineaArchivo = fuenteSalida.readLine()) != null)
//Datos que se guardaran en el fichero de texto
archivoSalida.println(1 + " cliente : " + lineaArchivo );
archivoSalida.println(2+ " vinilo titulo :"+fuentevinilo);
archivoSalida.println(3+ " Cd titulo :" +fuenteCD);
archivoSalida.println(4+ " cassete titulo :" +fuentecassete);
// Se cierra el stream de salida
archivoSalida.close(); }
catch (IOException e) {
System.out.println("Excepcion Entrada/Salida");
}
}
}
do{
System.out.println("Esperando orden:");
System.out.println("Crear cliente =crear");
System.out.println("Listar cliente =Listar");
System.out.println("Eliminar cliente =Eliminar");
System.out.println("Salir");
Respuesta=teclado.nextLine();
//RESTO DEL PROGRAMA
....
}while( ( !Respuesta.equalsIgnoreCase("Listar")
&& !Respuesta.equalsIgnoreCase("crear")
&& !Respuesta.equalsIgnoreCase("Eliminar")
&& !Respuesta.equalsIgnoreCase("Salir")
)
|| repetir.equalsIgnoreCase("si")
);
Esperando orden:
Crear cliente =crear
Listar cliente =Listar
Eliminar cliente =Eliminar
Salir
crear
Que quiere Crear
Cliente
Musica
Venta
Salir
musica
introduzca el formato de musica
Formatos disponibles:
Vinilo
CD
Cassete
salir
vinilo
Vinilo
Introduzca el titulo de la obra:
a
Introduzca el autor de la obra:
s
Y a comprado un vinilo con el titulo a
Quiere hacer algo más
si
Exception in thread "main" java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at Principal.main(Principal.java:263)
Carlcox escribió:Yo lo probé y no petaba. Seguro que solo has cambiado lo del while que te dije?
Igualmente te digo que ese fallo del nullpointer sucede cuando intentas acceder a una propiedad o método de un objeto que tiene valor null. Por ejemplo:
Cuando haces Respuesta.equalsIgnoreCase("listar") si Respuesta vale null te saltara error de nullpointer, por eso se recomienda ponerlo al revés para que nunca te falle ("listar".equalsIgnoreCase(Respuesta)).
Además el error te dice la linea que falla. Revisa la linea 263 a ver si estas accediendo a un objeto que vale null.
try{ String lineaArchivo;
String fuenteArchivo=Cliente.getNombre();
BufferedReader fuenteSalida;
String fuentevinilo=Vinilo.getTitulo();
String fuenteCD=CD.getTitulo();
String fuentecassete=cassete.getTitulo();
fuenteSalida = new BufferedReader(
//esta es la linea 263
new StringReader(fuenteArchivo));