Se lo inserisco tra alcune parti di codice, votoPI e votoLPI non vengono riconosciuti come variabili.
In altre parti mi da errori vari
Ho più o meno intuito il funzionamento del parseInt ma non dove inserirlo esattamente per farlo funzionare.
Se lo inserisco tra alcune parti di codice, votoPI e votoLPI non vengono riconosciuti come variabili.
In altre parti mi da errori vari
Ho più o meno intuito il funzionamento del parseInt ma non dove inserirlo esattamente per farlo funzionare.
votoPI e votoLPI sono due variabili LOCALI nel blocco del while ed esistono e sono "visibili" appunto solo nel blocco del white. Pertanto i due parseInt andrebbero messi appunto nel while e chiaramente dopo la dichiarazione di queste due variabili.
E inoltre, non so come è fatta la classe Studente ma non ha granché senso che debba tenere i due voti come String.
Quindi: i due nextToken(), ok.
POI fai i due parseInt. Se sbuca fuori NumberFormatException è perché non sono numeri validi e quindi la riga è "malformata". Puoi segnalare l'errore all'utente e/o abortire il ciclo.
POI a quel punto puoi creare un oggetto Studente.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok, allora se decido di dichiararli come interi, come faccio a farli leggere al BufferedReader?
Se modifico la classe Studente e do come metodo readLine al BR( String rigaLetta=br.readLine(); ) mi va in errore perchè non ha metodi di lettura interi![]()
Ma la lettura non devi cambiarla, così va bene. Una volta che hai la tua String votoPI, restuituita da nextToken(), applichi il parseInt a quella stringa, e poi al costruttore di Studente passerai l'intero ricevuto. Scegliendo se e come gestire l'errore ovviamente, come ti è stato consigliato
Il consiglio che ti è stato dato da andbin è proprio di dichiarare quelle variabili come interi nella classe Studente.
Quindi una volta preso l'intero dalla stringa, passi semplicemente l'intero al costruttore.
Questo non è obbligatorio ovviamente, puoi tenere la variabile come string, era solo un consiglio logico,visto che il voto è un numero.
Se lo mantieni come stringa ok, non serve il parsing, ma a quel punto tutte le volte che vorrai trattare quella stringa come numero (ad esempio per fare una media, o qualsiasi altra cosa), dovrai riconvertirla in numero.
Poi fai come vuoi![]()
Ultima modifica di Ansharja; 22-12-2016 a 21:36
Mi spieghi allora come faccio a leggere un intero con BufferedReader, che non li legge?
cosa che avevo già chiesto qui e questa è stata la risposta:
__________________________________________________ ___________________
Con BufferedReader leggi "a righe" (String) e basta.
Con StringTokenizer spezzi la riga in token (che sono sempre String!) e basta.
E i token che ti aspetti siano interi li devi parsare TU nel modo che ritieni opportuno (es. parseInt di Integer).
Tutto qui. Non cercare problemi dove non ce ne sono.
__________________________________________________ ___________________
Con BufferedReader leggi "a righe" (String) e basta.
Con StringTokenizer spezzi la riga in token (che sono sempre String!) e basta.
E i token che ti aspetti siano interi li devi parsare TU nel modo che ritieni opportuno (es. parseInt di Integer).
Tutto qui. Non cercare problemi dove non ce ne sono.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
"nel modo che ritieni opportuno"...
Sono ore che chiedo come diavolo si usa perchè mi sto scervellando da stamattina e non riesco a capire e piuttosto che darmi una BANALE (credo per voi ) soluzione,un esempio, perdete tempo con righe e righe di cose già dette
boh.
nell'altro post scrivo che non so dove inserire il codice e mi rispondi "inseriscilo dove ti serve" ,
Mi dici di non tenere i voti come string e poi riparli di usare il parseInt nel post dopo.
Ragà, ho bisogno d'aiuto, se potete darmelo bene altrimenti amici come prima ma non mi incasinate la testa con idee poco chiare per piacere
Certo, darti la banale soluzione sarebbe molto più veloce anche per noi, ce la caveremmo in 5 minuti. Se impieghiamo il nostro tempo per darti consigli invece che scrivere la soluzione è perché non ti aiuteremmo davvero se scrivessimo la soluzione e basta.
Impari se capisci qual'é la problematica e poi la risolvi tu, con tutto l'aiuto di cui hai bisogno ovviamente.
La frase di andbin che hai ripreso, se guardi, dice qual è il metodo da utilizzare, ovvero parseInt di Integer.
DEVI essere in grado di cercare nella documentazione online come dichiarare il metodo, basta scrivere su google comunque.