View Full Version : [JAVA] Scioglietemi dei dubbi
Salve a tutti. Sono un principiante per quanto riguarda l'ambito della programmazione (ho programmato solo in Visual Basic). All'Università ci insegnano a programmare in Java e visto che fra un pò ho l'esame :( vorrei che qualcuno di voi mi facesse sparire i miei dubbi:
1) Per quanto riguarda il ciclo Do, quando mi accorgo che conviene usarlo e quando no? Magari vi posto un'esercizio che mi hanno dato con la soluzione.
2)Come faccio ad associare, per fare un esempio, il voto di un esame ad un determinato registro? Oppure a restituire il voto di un determinato registro?
Spero proprio che mi aiutate sono nella m***a più totale :muro: . Grazie :D
import java.io.*;
public class RegistroBase{
private static Statino leggiStatino(BufferedReader r) throws Exception{
String n, c, d ,v;
n=r.readLine();
if (n==null)
return null;
c=r.readLine();
d=r.readLine();
v=r.readLine();
int iv=Integer.parseInt(v);
int ic=Integer.parseInt(c);
return new Statino(n, ic, d, iv);
}
public static Statino[] leggiRegistro(String filename) throws Exception{
FileReader f=new FileReader(filename);
BufferedReader r=new BufferedReader(f);
Statino s=null; //conta quanti blocchi nel file
int count =0;
do{
s=leggiStatino(r);
if (s!=null) count++;
}while (s!=null);
if (count == 0)
return null;
f=new FileReader(filename);
r=new BufferedReader(f);
Statino [] vec=new Statino[count];
count =0;
do{
s=leggiStatino(r);
if (s!=null) {
vec[count]=s;
count++;
}
}while (s!=null);
return vec;
}
}
Questa ad esempio è una classe che non riesco a capire cosa diavolo fa. Perché poi usa il Do?
La più classica delle risposte sul do-while: l'istruzione do-while esegue sicuramente almeno una volta il contenuto del ciclo.
Da un'altra prospettiva, il blocco del ciclo viene eseguito prima dell'istruzione di controllo.
Quest'ultima particolarità è quella che vedi nel tuo programma:
Statino s=null;
do{
s=leggiStatino(r);
if (s!=null) count++;
}while (s!=null);
Un while avrebbe avuto bisogno o di un valore di controllo diverso dall'essere (s!=null) (e quindi di una variabile in più) o avrebbe dovuto introdurre l'assegnamento "s=leggiStatino(r)" all'interno dell'istruzione di controllo (chi l'ha scritto credo volesse rendere tutto molto esplicito).
Statino s=null;
while((s=leggiStatino(r))!=null) {
count++;
}
Il pezzo di programma legge un file che contiene una serie di rappresentazioni di oggetti Statino.
Il primo ciclo do-while è usato per contare quanti oggetti Statino ci sono nel file.
Il numero di oggetti è usato per inizializzare l'array che sarà restituito dal metodo.
Il secondo ciclo serve per riempire l'array creato: noterai che è pressochè identico al primo salvo che, stavolta, gli oggetti Statino vengono infilati nell'array "vec".
E' stato un professore a scrivere quel pezzo di codice?
Per associare un voto ad un registro ti serve qualcosa che rappresenti un Registro. Molto dipende da com'è strutturato il tuo progetto, ma in generale un oggetto personalizzato (le cui caratteristiche siano avere un nome che lo identifichi e contenere un elenco di "voti") è un'idea molto "Java".
Grazie spero di aver capito ora!!! Cmq non lo so se è stato un prof. a scriverlo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.