Autor Tema: Ejercicios java leer archivo y mostrar datos leidos FileReader BufferedReader  (Leído 4594 veces)

Serch83

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Buenos dias! me examino el sabado y tengo aun unas dudas, el curso es online y supongo que por eso me esta costando mas, alguien seria tan amable de ayudarme aunque fuera por skype? para explicarle las dudas?

Por ejemplo

8.   Realiza un programa que almacene vehículos en una lista. Antes de insertar dicho vehículo en la lista comprobaremos que la matricula no esta ya en la lista.

Intento crear el arraylist para que me pida por teclado los dato y me da error. no hay manera, no pongo el codigo por que se que esta mal de todas todas. estoy bastante agobiado. mi skype es *******

Muchisimas gracias!
« Última modificación: 08 de Marzo 2017, 20:06 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #1 en: 13 de Enero 2017, 15:34 »
Hola Serch83.

Lo mejor es que pegues el código para poder ayudarte sobre lo que tengas realizado.



saludos. ;D

Serch83

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #2 en: 13 de Enero 2017, 15:37 »
El de Arraylist ya lo conseguí hacer!!  hay una parte de este (ya pongo el enunciado) que no consigo que me lea el archivo.

Crea otra función que lea el fichero anterior y muestre  todos los datos de cada coche en un cuadro de dialogo, es decir, si tenemos 3 vehículos mostrara 3 cuadros de dialogo con sus respectivos datos.

a la hora de intentar leer el archivo, no se el porque pero me da error null. y no veo el por que


Código: [Seleccionar]
package vehiculofichero;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Vehiculofichero {


    public static void main(String[] args) {
Scanner lector=new Scanner (System.in);
String ruta;
String marca = "seat", modelo= "ibiza", matricula="3456al"; int tamdeposito=0;
boolean funciona;
funciona=almacenarVehiculoFichero(matricula, marca, modelo, tamdeposito);
boolean lee;
lee= muestraDatos();
    }
   
    public static boolean almacenarVehiculoFichero (String matricula, String marca, String modelo, int tamdeposito){
        Scanner lector = new Scanner (System.in);
       
        String ruta;
        File file;
        FileWriter fw=null;
       
        System.out.println("Dame la ruta");
        ruta = lector.nextLine();
        try{ file=new File(ruta);
        fw=new FileWriter(file);
       
        System.out.println("Matricula: ");
        matricula = lector.nextLine();
        System.out.println("Modelo: ");
        modelo = lector.nextLine();
        System.out.println("Marca: ");
        marca = lector.nextLine();
        System.out.println("tamdeposito: ");
        tamdeposito = lector.nextInt();
       
        fw.write(matricula);
          fw.write(modelo );
            fw.write(marca );
              fw.write(tamdeposito );
              fw.close();
              return true;
        }
       
        catch(Exception e){System.out.println("Error: " +e.getMessage());
        return false;
     
       
        }
    }
      public static boolean muestraDatos(DataInputStream dis) throws IOException {
try{
            FileReader lector=new FileReader("ruta"); 
 BufferedReader BR = new BufferedReader(lector);
       System.out.println(BR.readLine());
                               
}catch (Exception e){System.out.println("Error: " +e.getMessage());
                    return false;               
}
}
}
« Última modificación: 14 de Enero 2017, 00:26 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #3 en: 14 de Enero 2017, 00:25 »
Hola Serch83.

Te he cambiado algunas cosas en el código, me daba algún error según lo pusiste.

Código: [Seleccionar]
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;

public class Vehiculofichero {

    public static void main(String[] args) {
Scanner lector = new Scanner (System.in);
String ruta, marca, modelo, matricula;
int tamdeposito;
boolean funciona, lee;
System.out.println("Dame la ruta");
        ruta = lector.nextLine();
        System.out.println("Matricula: ");
matricula = lector.nextLine();
System.out.println("Modelo: ");
modelo = lector.nextLine();
System.out.println("Marca: ");
marca = lector.nextLine();
System.out.println("tamdeposito: ");
tamdeposito = lector.nextInt();
lector.close();
funciona = almacenarVehiculoFichero(matricula, marca, modelo, Integer.toString(tamdeposito), ruta);
muestraDatos(ruta);
    }
   
    public static boolean almacenarVehiculoFichero(String matricula, String marca,
    String modelo, String tamdeposito, String ruta){
        FileWriter fw = null;       
        try{
fw = new FileWriter(ruta, true);
fw.write(matricula + "\n");
fw.write(modelo + "\n");
fw.write(marca + "\n");
fw.write(tamdeposito + "\n");
fw.close();
return true;
        } catch(Exception e){
        System.out.println("Error: " +e.getMessage());
        }
        return false; 
    }
   
    public static boolean muestraDatos(String ruta) {
    FileReader lector = null;
    BufferedReader BR = null;
try {
lector = new FileReader(ruta); 
BR = new BufferedReader(lector);
String linea;
while((linea = BR.readLine()) != null) {
System.out.println(linea);
}
return true;
} catch(Exception e) {
System.out.println("Error: " +e.getMessage());
return false;
} finally {
try {
if(BR != null) {
BR.close();
}
} catch(Exception e) {
System.out.println("Error: " +e.getMessage());
}
}
    }
}

No se si es eso lo que necesitas, sino es así, lo dices y lo intentamos adaptar.

Saludos. ;D

Serch83

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #4 en: 16 de Enero 2017, 11:14 »
Muchas Gracias!!!!!! es que estoy repasando para el examen del sabado y aun tengo una duda con otro ejercicio.todo me funciona menos el paso ultimo de la ITV el caso e

7.   Dada la siguiente clase :
Public class Vehiculo{
Private String matricula;
Private String marca
Private String modelo;
}
a.   Crea el constructor vacío.
b.   Crea el constructor al que le pasamos todos los campos.
c.   Crea los getters y setters de matricula.
d.   Crea otra clase llamanda coche que herede las propiedades de VehiculoaMotor, y tenga además el campo tamDeposito ,  cilindrada , itv (es un boolean) .
e.   Crea un método que te diga si tiene la itv en vigor .


vehiculo.java
Código: [Seleccionar]
public class vehiculo {
    private String matricula;
    private String marca;
    private String modelo;

    public vehiculo(){  // creado constructor vacío
        matricula="";
        marca="";
        modelo="";
    }
   
    public vehiculo(String matricula, String marca, String modelo){   // creado constructor con los 3 parametros
        this.matricula=matricula;
        this.marca=marca;
        this.modelo=modelo;
    }
   
    public String getMatricula(){   // getter de matricula
        return matricula;
    }
    public String getMarca(){
        return marca;
    }
   
    public void setMatricula(String matricula){   // setter de matricula
        this.matricula=matricula;
    }

    public void datosVehiculo(){
        System.out.println(matricula + marca + modelo);
    }
}


coche.java
Código: [Seleccionar]
import java.util.Scanner;


public class coche extends vehiculo{ // se crea una clase que hereda datos de vehiulo
    private int tamDeposito;
    private int cilindrada;
    private boolean itv;
   
    public coche(){ //constructor vacio de coche.
        super(); // accederemos a las propiedades de la superclase.
        tamDeposito=0;
        cilindrada=0;
        itv=false;
    }
     public boolean getItv() {   // getter de itv
        return itv;
    }
    public String getMatricula(){   //getter de matricula haciendo relacion a la superclase ya que está como privada
        return super.getMatricula();
    }
    public int getCilindrada(){
        return cilindrada;
    }
   
    public void setItv(boolean itv){     // setter de itv
        this.itv=itv;
    }
    public void setMatricula(String matricula){     //setter de matricula haciendo relacion a la superclase ya que está como privada
        super.setMatricula(matricula); 
    }
    public void setCilindrada(int cilindrada){
        this.cilindrada=cilindrada;
    }
    public void setTamDeposito(int tamDeposito){
        this.tamDeposito=tamDeposito;
    }
   
    public void datoscoche (){
        System.out.println("Vamos a ver si un vehiculo tiene la itv en vigor.");
        System.out.println("Indica la matricula: ");
        Scanner lector=new Scanner(System.in);
        setMatricula(lector.nextLine());
        System.out.println("Indica la cilindrada: ");
        setCilindrada(lector.nextInt());
        System.out.println("Indica el tamaño del deposito: ");
        setTamDeposito(lector.nextInt());
    }
   
    public void itvVigor (){    // metodo para comprobar si la itv está en vigor
    if (super.getMatricula().length()>7 || super.getMatricula().length()<4 || super.getMatricula().startsWith("a") || super.getMatricula().startsWith("b") ||
        super.getMatricula().startsWith("c") || super.getMatricula().startsWith("d") || super.getMatricula().startsWith("e") ||
        super.getMatricula().startsWith("f") || super.getMatricula().startsWith("g") || super.getMatricula().startsWith("h") ||   
        super.getMatricula().startsWith("i") || super.getMatricula().startsWith("j") || super.getMatricula().startsWith("k") ||   
        super.getMatricula().startsWith("l") || super.getMatricula().startsWith("m") || super.getMatricula().startsWith("n") ||
        super.getMatricula().startsWith("o") || super.getMatricula().startsWith("p") || super.getMatricula().startsWith("r") ||   
        super.getMatricula().startsWith("s") || super.getMatricula().startsWith("t") || super.getMatricula().startsWith("u") ||   
        super.getMatricula().startsWith("v") || super.getMatricula().startsWith("x") || super.getMatricula().startsWith("z") || 
        super.getMatricula().startsWith("A") || super.getMatricula().startsWith("B") ||
        super.getMatricula().startsWith("C") || super.getMatricula().startsWith("D") || super.getMatricula().startsWith("E") ||
           

vehiculoUF4.java
Código: [Seleccionar]
import java.util.*;
public class vehiculoUF4 {

    public static void main(String[] args) {
        coche car=new coche();  //creo objeto de la subclase Coche
        car.datoscoche();       //llamo al método datosCoche() para pedir datos
        car.itvVigor();         //llamo al método itvVigor() para comprobar si pasa la itv
    }
   
}


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #5 en: 16 de Enero 2017, 17:03 »
Buenas.

Entiendo que lo que pide el enunciado es que crees un método que muestre un mensaje diciendo si la ITV está en vigor dependiendo del valor del atributo "itv", algo más fácil de lo que estás intentando hacer. Porque para intentar hacer algún cálculo, deberías saber primero la fecha de matriculación.

Código: [Seleccionar]
public void itvVigor (){    // metodo para comprobar si la itv está en vigor
   if(itv == true) {
      System.out.println("La ITVestá en vigor.");
   }else {
      System.out.println("La ITV no está en vigor.");
   }
}

Saludos. ;D

Serch83

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #6 en: 16 de Enero 2017, 17:49 »
muchas gracias Pedro pero asi siempre me va a decir que no esta en vigor no?

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda con unos ejercicios
« Respuesta #7 en: 16 de Enero 2017, 18:18 »
No tendría porque, todo dependerá del valor que tome itv, por defecto será false, pero cuando tu crees una instancia de un coche, podrás cambiar ese valor. Te dejo un ejemplo, puedes añadir esto a tu método "main":

Código: [Seleccionar]
public static void main(String[] args) {
Coche car = new Coche(); 
car.setMatricula("DDD4567");
car.setMarca("Seat");
car.setModelo("León");
car.setTamDeposito(62);
car.setCilindrada(1200);
car.setItv(true);       
}
Claro que para hacer esto, deberías crear todos los métodos "setter" que te faltan, tanto en la clase "Vehiculo" como en la clase Coche.

Aun así tienes varios errores más, en la clase "Coche" intentas establecer el valor de matricula, cuando el atributo matricula está en la clase "Vehiculo",y la clase "Coche" ya hereda  de "Vehiculo". No se si es que no tienes bien claro lo que es la herencia en Java, te dejo un enlace para que si quieres le eches un ojo.

https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=651:concepto-o-definicion-de-herencia-en-java-programacion-orientada-a-objetos-ique-es-ejemplos-cu00684b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

El tema pertenece al curso:

https://www.aprenderaprogramar.es/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".