Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26
  1. #11
    Con "break" il metodo si ferma dopo l'inserimento del cognome.
    Quello che intendevo è eseguire il programma fino in fondo, visto che si fermava dopo aver inserito "*", senza darmi in output quello che contiene il file. I dati che ho citato sono i dati del file di testo dopo aver eseguito il programma(che non finiva).
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

  2. #12
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da JanQuarius
    Con "break" il metodo si ferma dopo l'inserimento del cognome.
    Quello che intendevo è eseguire il programma fino in fondo, visto che si fermava dopo aver inserito "*", senza darmi in output quello che contiene il file. I dati che ho citato sono i dati del file di testo dopo aver eseguito il programma(che non finiva).
    Ah provando ora ho capito, non hai collegato il FileReader allo Scanner e quest'ultimo si riferisce ancora al precedente System.in, ti basta istanziare nuovamente l'oggetto Scanner dopo aver dichiarato il FileReader:

    codice:
    sc = new Scanner(fileIn);
    l'istruzione break non ferma i metodi ma solo i costrutti di controllo del flusso (switch, for, while e do-while), per uscire da un metodo serve un return, un'eccezione o il completamento del corpo se la funzione è void.
    non succedeva nulla perché lo scanner continuava ad operare sul System.in e la condizione di iterazione del ciclo di verificava sempre.

  3. #13
    Grazie mille!
    Ora funziona.
    Ho diminuito un po' la lunghezza dell'array a 10, per non far casini.
    Sono sopratutto errori di distrazione. Purtroppo ho già consegnato l'esercizio sbagliato, ma il prof lo cantatterò lo stesso per farglielo vedere.
    Ciao!
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

  4. #14
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da JanQuarius
    Grazie mille!
    Ora funziona.
    Ho diminuito un po' la lunghezza dell'array a 10, per non far casini.
    Sono sopratutto errori di distrazione. Purtroppo ho già consegnato l'esercizio sbagliato, ma il prof lo cantatterò lo stesso per farglielo vedere.
    Ciao!
    Basta identificare l'operazione che causa l'errore (se sei incerto metti temporaneamente delle stampe qua e là per capire qual è) e poi mettere a posto è semplice, ciao

  5. #15
    Ho un altro problema, solo che con un altro esercizio, ma sempre di questo tipo.
    Vi posto il codice che mi dà problemi:
    codice:
    void SalvoDati(){
            //memorizzo tutti i dati necessari negli array
            System.out.print("Inserire il numero di libri: ");
            numLib = sc.nextInt();
    
            //inizializzo gli array dove andrò a memorizzare i dati necessari
            autore = new String[numLib];
            titolo = new String[numLib];
            casa_editrice = new String[numLib];
            disciplina = new String[numLib];
    
            int i;
            for(i=0;i<numLib;i++){ //inizio a memorizzare i dati negli array
                System.out.println("Inserire l'autore del libro: ");
                autore[i] = sc.nextLine();
                System.out.println("Inserire il titolo del libro: ");
                titolo[i] = sc.nextLine();
                System.out.println("Inserire la casa editrice del libro: ");
                casa_editrice[i] = sc.nextLine();
                System.out.println("Inserire la disciplina del libro: ");
                disciplina[i] = sc.nextLine();
            }
        }
    Quando vado ad eseguire questo metodo, mi dà questo:
    run-single:
    Inserire il numero di libri: 1
    Inserire l'autore del libro:
    Inserire il titolo del libro:


    Quindi si può facilmente notare che invece di aspettare finchè io inserisco l'autore, l'interprete mi salta la riga non aspettando nemmeno qualcosa in input. Perchè?
    Se io metto come numero di libri >= 2, allora dopo il primo giro tutto si può memorizzare, l'autore incluso.
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

  6. #16
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da JanQuarius
    Quindi si può facilmente notare che invece di aspettare finchè io inserisco l'autore, l'interprete mi salta la riga non aspettando nemmeno qualcosa in input. Perchè?
    In Scanner il delimitatore predefinito è una sequenza di uno o più whitespace (sequenza di newline compresa). Questi vengono "saltati" tra un token e l'altro. Se andassi avanti a colpi di nextInt, ad ogni invocazione, lo Scanner salta i delimitatori che precedono il token ed essi non darebbero problemi.

    Se a un nextInt fai seguire un nextLine, succede che i delimitatori dopo l'intero vengono presi dal nextLine. Siccome hai premuto <invio>, il nextLine lo vede come una riga "vuota".

    Non è un errore o baco ... è così.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #17
    No, non ho premuto invio.
    Me la salta la riga
    (
    Inserire l'autore del libro:
    Inserire il titolo del libro:

    ), senza che io inserisca niente, esso passa subito all'introduzione del "titolo".

    L'unica cosa che faccio io è "Inserisco 1 come (numero di libri)"
    (
    Inserire il numero di libri: 1
    Inserire l'autore del libro:
    Inserire il titolo del libro:

    )

    Perchè mi salta la riga. Di errori non ne ho notato. La cosa mi sembra molto strana.
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

  8. #18
    Ecco cosa succede se finisco l'esecuzione del programma:

    Inserire il numero di libri: 2
    Inserire l'autore del libro:
    Inserire il titolo del libro:
    1
    Inserire la casa editrice del libro:
    2
    Inserire la disciplina del libro:
    3
    Inserire l'autore del libro:
    4
    Inserire il titolo del libro:
    5
    Inserire la casa editrice del libro:
    6
    Inserire la disciplina del libro:
    7

    <<<I dati del file>>>

    Libro numero 0: ;1;2;3

    Libro numero 1: 4;5;6;7


    Libro numero 0 non contiene niente nella prima posizione, prima del ";"

    p.s. Uso numeri interi solo per prova, il tipo di dato è String.
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

  9. #19
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da JanQuarius
    No, non ho premuto invio.
    Scusa eh, ma quando ti ha chiesto il numero di libri hai digitato 1 poi <INVIO>
    ?

    Se è così, allora sappi che Scanner ha preso il 1 come intero ma non ha scartato i delimitatori dopo (il tuo invio). nextLine prende tutto fino al successivo newline (escludendolo poi dal String che ritorna).
    Quindi nextLine "vede" una riga vuota.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #20
    Originariamente inviato da andbin
    Scusa eh, ma quando ti ha chiesto il numero di libri hai digitato 1 poi <INVIO>
    ?

    Se è così, allora sappi che Scanner ha preso il 1 come intero ma non ha scartato i delimitatori dopo (il tuo invio). nextLine prende tutto fino al successivo newline (escludendolo poi dal String che ritorna).
    Quindi nextLine "vede" una riga vuota.
    Sì, il numero di libri l'ho digitato e ho premuto invio. Ma dopo, inizia il ciclo "for". Ma perchè prende tutte le altre stringhe e la prima no?
    Storie, Pensieri & Riflessioni:
    http://storieriflessioni.blogspot.it/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.