Java io dubbio su lettura da FIle

di il
2 risposte

Java io dubbio su lettura da FIle

Ciaoo!

Ho scritto un file dove dentro doveva contenere tot persone (nome,cognome,numerotelefono,yes or no)
yes or no riguarda se andranno alla festa oppure no.
Dopo avere creato la rispettiva classe Invitato, con dichiarazioni iniziali delle stringhe, costruttore, getter e setter
ho qualche problema nel main,
volevo infatti sapere principalmente due cose
-se c'è un modo per leggere direttamente dal file senza dichiarare inizialmente il numero degli invitati
-istruzione per dire "non fare nulla", non volevo usare un break in quanto esce o un System.exit(0);
perché dovrei stampare gli invitati solo se alla fine della riga del file c'è un yes "y";

public class Collaudo {

public static Invitati creaInvitato(String invitatoLetto) {
//mi legge gli invitati nel file
String[] arrayRiga = invitatoLetto.split(",");
Invitati invitato = new Invitati(arrayRiga[0],arrayRiga[1],arrayRiga[2],
arrayRiga[3]);

if (arrayRiga.length != 4) {
System.out.println("errore");
System.exit(0);
}

return invitato;
}


public static void main(String[] args) {

System.out.println("inserire il nome di un file");
Scanner scan = new Scanner(System.in);
String nomeFile=scan.next();
PrintWriter outputStream = null;
/*inizializzo PrintWriter
per iniziare a scrivere su file*/

try {
Scanner daFile= new Scanner(new File(nomeFile));

int numeroInvitati = 4;

Invitati invitati[]= new Invitati[numeroInvitati];
//quanti invitati ci sono nel file (4)
/*modo per leggere direttamente senza dichiarare il numero
degli invitati????????
*/

for(int i=0; i <invitati.length; i++) {
invitati = creaInvitato(daFile.nextLine());
//lettura righe e conta posizioni array
}
for(int i =0; i < invitati.length; i++) {
System.out.println(invitati);

if(invitati.getYesorNo().equalsIgnoreCase("y")) {
System.out.println(invitati);
} else {
//non stamparli dire di non fare nulla
}

}


} catch (FileNotFoundException e) {
System.out.println(nomeFile + "non trovato");
System.exit(0);
} catch (Exception e) {
System.out.println("errore generico" + e);
System.exit(0);
}

}

}


Grazie mille

2 Risposte

  • Re: Java io dubbio su lettura da FIle

    KernelPanic ha scritto:


    -se c'è un modo per leggere direttamente dal file senza dichiarare inizialmente il numero degli invitati
    L'ideale sarebbe usare una "collezione" (es. ArrayList) che si espande automaticamente. Se non puoi/non sai usare le collezioni, va bene un array ma allora bisogna valutare bene la strategia da usare per ri-allocare l'array.
    Una possibilità è mimare esattamente quello che fa ArrayList internamente, tieni anche la dimensione "logica" (il numero effettivo di elementi) e quando la capacità fisica dell'array non è più sufficiente, ne crei un'altro più ampio.

    KernelPanic ha scritto:


    -istruzione per dire "non fare nulla", non volevo usare un break in quanto esce o un System.exit(0);
    Detto così, vuol dire poco/nulla.

    Cerca comunque di separare bene la lettura del file dal resto. NON mescolare le cose.
  • Re: Java io dubbio su lettura da FIle

    Grazie mille, quindi devo sempre tenere una dimensione...
    anche perché altrimenti non saprei proprio come gestirmelo!

    il secondo problema l'ho risolto facendo un solo if che comprendeva
    if(invitati.getYesorNo().equalsIgnoreCase("y") == true) {
    System.out.println(invitati);
Devi accedere o registrarti per scrivere nel forum
2 risposte