Ayuda con archivos!!

elizbeth2
25 de Mayo del 2009
Hola!!

He tenido problemas en un trabajo que se me pide agregar escritura y lectura de archivos, agradecería muchísimo si me pudieran ayudar. Este es el programa original:

----------------------------------------------
//archivo Horas.java
//Subclase

import java.util.Scanner;

public class Horas extends Empleado
{
private int horasTrabajadas;
private int horasExtras;

//metodos

public Horas(int numero, String nombre, float sueldo, int horasTrabajadas, int horasExtras)
{
super(numero,nombre,sueldo);
this.horasTrabajadas = horasTrabajadas;
this.horasExtras = horasExtras;
}

public void obtenerDatos()
{
Scanner ent = new Scanner(System.in);
super.obtenerDatos();
System.out.print("Horas Trabajadas: ");
horasTrabajadas = ent.nextInt();
System.out.print("Horas Extras: ");
horasExtras = ent.nextInt();
}

public void imprimeDatos()
{
super.imprimeDatos();
System.out.println("Horas Trabajadas Horas Extras");
System.out.println(horasTrabajadas+ " " +horasExtras );
}
}//end class
----------------------------------------------

Ahora como lo he modificado:
-----------------------------------------------
//archivo Horas.java
//Subclase

import java.io.*;
import java.util.Scanner;

public class Horas extends Empleado
{

throws IOException{

private int horasTrabajadas;
private int horasExtras;

//metodos



public Horas(int numero, String nombre, float sueldo, int horasTrabajadas, int horasExtras)
{
super(numero,nombre,sueldo);
this.horasTrabajadas = horasTrabajadas;
this.horasExtras = horasExtras;
}

try{
Archi = new DataOutputStream( new FileOutputStream("../Archivo.dat",true) );

public void obtenerDatos()
{
Scanner ent = new Scanner(System.in);
super.obtenerDatos();
System.out.print("Horas Trabajadas: ");
horasTrabajadas = ent.nextInt();
System.out.print("Horas Extras: ");
horasExtras = ent.nextInt();

Archi.writeInt(horasTrabajadas);
Archi.writeInt(horasExtras);
Archi.close();

}

}

catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {}
}

public void imprimeDatos()
{
super.imprimeDatos();
System.out.println("Horas Trabajadas Horas Extras");
System.out.println(horasTrabajadas+ " " +horasExtras );
}
}//end class
---------------------------------------------------

Si desean darle un vistazo a la clase empleado y empleado main igual las dejo:
--------------------------------------------
//archivo Empleado.java
//Super clase

import java.util.Scanner;

public abstract class Empleado
{
private int numero;
private String nombre;
private float sueldo;

public Empleado(int numero, String nombre, float sueldo)
{
this.numero = numero;
this.nombre = nombre;
this.sueldo = sueldo;
}

public void obtenerDatos()
{
Scanner ent = new Scanner(System.in);

System.out.print(" Nombre: ");
nombre = ent.nextLine();
System.out.print("Numero: ");
numero = ent.nextInt();
System.out.print("Sueldo: ");
sueldo = ent.nextFloat();
}

public void imprimeDatos()
{
System.out.println(" Nombre Numero Sueldo ");
System.out.println(nombre+ " " +numero+ " " +sueldo);
}

public abstract void obtenDatos();


}//end class
---------------------------------------------------------
//Aplicacion Cliente

import java.util.Scanner;

public class EmpleadoMain
{
private static int op=0;
public static void main(String args[])
{
System.out.println("Tipo de datos que quiere introducir");
Scanner entrada = new Scanner(System.in);
System.out.println("1.Empleado administrativo 2.Empleado por horas OPCION");
op = entrada.nextInt();

Empleado array[] = new Empleado[5]; //arreglo polimorfico

switch(op)
{
case 1 :for(int i=0; i<array.length; i++)
{
array[i] = new Administrativo(0," ",0.0f," ",0);//llena el array polimorfico con //objetos Administrativos
}

for(int i=0; i<array.length; i++)
{
array[i].obtenerDatos();//ocurre el polimorfismo
}
for(int i=0; i<array.length; i++)
{
array[i].imprimeDatos();//sucede el polimorfismo
}
break;
case 2 :for(int i=0; i<array.length; i++)
{
array[i] = new Horas(0," ",0.0f,0,0);// llena el array polimorfico con objetos //Horas
}

for(int i=0; i<array.length; i++)
{
array[i].obtenerDatos(); //ocurre el polimorfismo
}
for(int i=0; i<array.length; i++)
{
array[i].imprimeDatos(); //ocurre el polimorfismo
}
break;
}


}

}
------------------------------------------------------------

Gracias de antemano!!

Ozito
25 de Mayo del 2009
elizbeth2,
Tenías un error en la clase EmpleadoMain (llamabas la clase Administritivo que no habías creado), lo he cambiado por una llamada a la clase Empleado y funciona. Te copio todas las clases para que las compares con las tuyas:

import java.io.*;
import java.util.Scanner;

public class Horas extends Empleado {

private int horasTrabajadas;
private int horasExtras;
private DataOutputStream Archi;

//metodos



public Horas(int numero, String nombre, float sueldo, int horasTrabajadas, int horasExtras)
{
super(numero,nombre,sueldo);
this.horasTrabajadas = horasTrabajadas;
this.horasExtras = horasExtras;
}



public void obtenerDatos()
{
try{
Archi = new DataOutputStream( new FileOutputStream("../Archivo.dat",true) );
Scanner ent = new Scanner(System.in);
super.obtenerDatos();
System.out.print("Horas Trabajadas: ");
horasTrabajadas = ent.nextInt();
System.out.print("Horas Extras: ");
horasExtras = ent.nextInt();

Archi.writeInt(horasTrabajadas);
Archi.writeInt(horasExtras);
Archi.close();

}

catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {}
}

public void imprimeDatos()
{
super.imprimeDatos();
System.out.println("Horas Trabajadas Horas Extras");
System.out.println(horasTrabajadas+ " " +horasExtras );
}
}//end class

--------------------------------------------------------
import java.util.Scanner;

public class Empleado
{
private int numero;
private String nombre;
private float sueldo;

public Empleado(int numero, String nombre, float sueldo)
{
this.numero = numero;
this.nombre = nombre;
this.sueldo = sueldo;
}

public void obtenerDatos()
{
Scanner ent = new Scanner(System.in);

System.out.print(" Nombre: ");
nombre = ent.nextLine();
System.out.print("Numero: ");
numero = ent.nextInt();
System.out.print("Sueldo: ");
sueldo = ent.nextFloat();
}

public void imprimeDatos()
{
System.out.println(" Nombre Numero Sueldo ");
System.out.println(nombre+ " " +numero+ " " +sueldo);
}

public void obtenDatos(){}


}//end class
--------------------------------------------------------------
import java.util.Scanner;

public class EmpleadoMain {

private static int op = 0;

public static void main(String args[]) {
System.out.println("Tipo de datos que quiere introducir");
Scanner entrada = new Scanner(System.in);
System.out.println("1.Empleado administrativo 2.Empleado por horas OPCION");
op = entrada.nextInt();

Empleado array[] = new Empleado[2]; //arreglo polimorfico

switch (op) {
case 1:
for (int i = 0; i < array.length; i++) {
array[i] = new Empleado(0, " ", 0.0f);//llena el array polimorfico con //objetos Administrativos
}

for (int i = 0; i < array.length; i++) {
array[i].obtenerDatos();//ocurre el polimorfismo
}
for (int i = 0; i < array.length; i++) {
array[i].imprimeDatos();//sucede el polimorfismo
}
break;
case 2:
for (int i = 0; i < array.length; i++) {
array[i] = new Horas(0, " ", 0.0f, 0, 0);// llena el array polimorfico con objetos //Horas
}

for (int i = 0; i < array.length; i++) {
array[i].obtenerDatos(); //ocurre el polimorfismo
}
for (int i = 0; i < array.length; i++) {
array[i].imprimeDatos(); //ocurre el polimorfismo
}
break;
}


}
}