Salve sono nuovo del forum, mi sto cimentando nella programmazione in java e per esercitarmi sto utilizzando esercizi trovati in rete. Sto avendo problemi con con un esercizio che mi da due classi aventi attributi private da inserire con tastiera.
Le due classsi sono:
public class Studente {
private int Matricola;
private String cognome;
private String nome;
private List<Esame> esami = new ArrayList<Esame> ();
}
pablic class Esame {
private String nome;
private int voto;
}
Dopo mi chiede di implementare il metodo "static"
inserimento () che legge da tastiera come in questo esempio:
matricola:
1234567
cognome:
Tizio
nome:
Caio
nome esame:
Java
voto esame:
28
nome esame:
analisi
voto esame:
27
nome esame:
Fine inserimento
Poi mi dice che l'inserimento del numero di esami è infinito finche non inseriamo
"" alla domanda "nome esame " , Qui nascono i miei problemi perche non sto riuscendo a capire che tipo di ciclo dovrei utilizzare per far si che si fermi quando si verifichi tale condizione.
Io l'ho svolto in questo modo: Classe studente
package studente;
import java.io.*;
import java.util.*;
public class Studente {
private int matricola;
private String cognome;
private String nome;
private List<Esame>esami =new ArrayList<Esame>();
public Studente() {}
public Studente(int matricola,String cognome,String nome,ArrayList<Esame>esami) {
this.matricola=matricola;
this.cognome=cognome;
this.nome=nome;
this.esami=esami;
}
public static void inserimento(int matricola,String cognome,String nome,String nomeEsame,int voto) {
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader tastiera=new BufferedReader(input);
System.out.println("matricola: ");
try {
String numeroLetto=tastiera.readLine();
matricola=Integer.valueOf(numeroLetto).intValue();
}
catch(Exception e) {
System.out.println("\nMatricola non corretta!");
}
System.out.println("cognome: ");
try {
cognome=tastiera.readLine();
}
catch(IOException e) {
}
System.out.println("nome: ");
try {
nome=tastiera.readLine();
}
catch(IOException e) {}
System.out.println("nome esame: ");
try {
nomeEsame=tastiera.readLine();
}
catch(IOException e) {}
System.out.println("voto: ");
try {
String numeroLetto=tastiera.readLine();
voto=Integer.valueOf(numeroLetto).intValue();
}
catch(IOException e) {
System.out.println("\nValore inserito non corretto!");
}
{
try(Scanner sc=new Scanner(System.in)){
while(sc.hasNext()) {
nomeEsame+= sc.next();
System.out.println(nomeEsame);
}
}
}
}
Classe esame:
package studente;
import java.util.Scanner;
public class Esame {
private String nome;
private int voto;
public Esame(String nome,int voto) {
this.nome=nome;
this.voto=voto;
}
}
Main implementato nella classe lab:
package studente;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import studente.Studente;
public class Lab
{
public static void inserimento(int matricola, String cognome, String nome, String nomeEsame, int voto) {}
public static void main(String args[]) {
int matricola=0;
String cognome=null;
String nome=null;
String nomeEsame=null;
int voto=0;
Studente.inserimento(matricola,cognome,nome,nomeEsame,voto);
}
}
Se qualcuno mi sappesse dire dove sbaglio e come potrei avere quel ciclo gli sarei molto grato , Grazie mille.