ndakota
29-02-2008, 14:21
ciao ho fatto questo programmino ma mi da sempre l'eccezione nella funzione write_file.. qualcuno mi sa dire perchè?? grazie.
Persona.java
public class Persona {
public String name;
public String number;
public String toString() {
return name + "\t" + number;
}
}
Eser1.java
import java.util.Vector;
import java.io.*;
public class Eser1 {
public static void main(String[] args) {
int choose;
Vector<Persona> elenco = new Vector<Persona>(1, 1);
read_file(elenco);
System.out.println("\tRUBRICA");
menu();
do {
do {
choose = Console.readInt("? ");
} while(choose < 1 || choose > 5);
switch(choose) {
case 1:
add(elenco);
break;
case 2:
modify(elenco);
break;
case 3:
delete(elenco);
break;
case 4:
showAll(elenco);
break;
case 5:
break;
default:
System.out.println("scelta errata. ripeti.");
}
} while(choose != 5);
write_file(elenco);
}
static void read_file(Vector<Persona> elenco) {
try {
int volte = 0;
FileInputStream f = new FileInputStream("persone.dat");
ObjectInputStream fIN = new ObjectInputStream(f);
while(true) {
try {
Persona p = (Persona) fIN.readObject();
elenco.addElement(p);
volte++;
} catch(EOFException e) {
System.out.println("caricate " + volte + " posizioni nel vettore");
f.close();
break;
}
}
}
catch(Exception e) {
System.out.println("non è possibile caricare il file.");
}
}
static void write_file(Vector<Persona> elenco) {
try {
FileOutputStream f = new FileOutputStream("persone.dat");
ObjectOutputStream fOUT = new ObjectOutputStream(f);
for(int i = 0; i < elenco.size(); i++) {
Persona p = elenco.elementAt(i);
fOUT.writeObject(p);
}
fOUT.flush();
f.close();
} catch(Exception e) {
System.out.println("eccezione in scrittura file.");
}
}
static void menu() {
System.out.println("1- aggiungi scheda\n2- modifica scheda\n3- elimina scheda");
System.out.println("4- visualizza rubrica\n5- esci");
}
static void add(Vector<Persona> elenco) {
Persona p = new Persona();
p.name = Console.readLine("inserisci nome: ");
p.number = Console.readLine("inserisci numero: ");
elenco.addElement(p);
}
static void modify(Vector<Persona> elenco) {
int ind = Console.readInt("inserire numero della scheda da modificare: ");
Persona p = new Persona();
p.name = Console.readLine("inserisci nuovo nome: ");
p.number = Console.readLine("inserisci nuovo numero: ");
try {
elenco.setElementAt(p, --ind);
}
catch(Exception e) {
System.out.println("posizione non esistente.");
}
}
static void delete(Vector<Persona> elenco) {
int ind = Console.readInt("inserire numero della scheda da eliminare: ");
try {
elenco.removeElementAt(--ind);
System.out.println("scheda elminata.");
}
catch(Exception e) {
System.out.println("posizione non esistente.");
}
}
static void showAll(Vector<Persona> elenco) {
Persona p = new Persona();
if(elenco.size() == 0)
System.out.println("rubrica vuota.");
else {
for(int i = 0; i < elenco.size(); i++) {
p = elenco.elementAt(i);
System.out.println(i+1 + "- " + p);
}
}
}
}
Persona.java
public class Persona {
public String name;
public String number;
public String toString() {
return name + "\t" + number;
}
}
Eser1.java
import java.util.Vector;
import java.io.*;
public class Eser1 {
public static void main(String[] args) {
int choose;
Vector<Persona> elenco = new Vector<Persona>(1, 1);
read_file(elenco);
System.out.println("\tRUBRICA");
menu();
do {
do {
choose = Console.readInt("? ");
} while(choose < 1 || choose > 5);
switch(choose) {
case 1:
add(elenco);
break;
case 2:
modify(elenco);
break;
case 3:
delete(elenco);
break;
case 4:
showAll(elenco);
break;
case 5:
break;
default:
System.out.println("scelta errata. ripeti.");
}
} while(choose != 5);
write_file(elenco);
}
static void read_file(Vector<Persona> elenco) {
try {
int volte = 0;
FileInputStream f = new FileInputStream("persone.dat");
ObjectInputStream fIN = new ObjectInputStream(f);
while(true) {
try {
Persona p = (Persona) fIN.readObject();
elenco.addElement(p);
volte++;
} catch(EOFException e) {
System.out.println("caricate " + volte + " posizioni nel vettore");
f.close();
break;
}
}
}
catch(Exception e) {
System.out.println("non è possibile caricare il file.");
}
}
static void write_file(Vector<Persona> elenco) {
try {
FileOutputStream f = new FileOutputStream("persone.dat");
ObjectOutputStream fOUT = new ObjectOutputStream(f);
for(int i = 0; i < elenco.size(); i++) {
Persona p = elenco.elementAt(i);
fOUT.writeObject(p);
}
fOUT.flush();
f.close();
} catch(Exception e) {
System.out.println("eccezione in scrittura file.");
}
}
static void menu() {
System.out.println("1- aggiungi scheda\n2- modifica scheda\n3- elimina scheda");
System.out.println("4- visualizza rubrica\n5- esci");
}
static void add(Vector<Persona> elenco) {
Persona p = new Persona();
p.name = Console.readLine("inserisci nome: ");
p.number = Console.readLine("inserisci numero: ");
elenco.addElement(p);
}
static void modify(Vector<Persona> elenco) {
int ind = Console.readInt("inserire numero della scheda da modificare: ");
Persona p = new Persona();
p.name = Console.readLine("inserisci nuovo nome: ");
p.number = Console.readLine("inserisci nuovo numero: ");
try {
elenco.setElementAt(p, --ind);
}
catch(Exception e) {
System.out.println("posizione non esistente.");
}
}
static void delete(Vector<Persona> elenco) {
int ind = Console.readInt("inserire numero della scheda da eliminare: ");
try {
elenco.removeElementAt(--ind);
System.out.println("scheda elminata.");
}
catch(Exception e) {
System.out.println("posizione non esistente.");
}
}
static void showAll(Vector<Persona> elenco) {
Persona p = new Persona();
if(elenco.size() == 0)
System.out.println("rubrica vuota.");
else {
for(int i = 0; i < elenco.size(); i++) {
p = elenco.elementAt(i);
System.out.println(i+1 + "- " + p);
}
}
}
}