Posso darti delle risposte parziali perché mi mancano tutte le classi che utilizzavi, tipo la classe Studente, la classe Anagrafica, di cui richiami un'istanza da dentro l'istanza di studente, ed anche la classe DataNascita.
Quindi potrebbero esserci dei problemi anche li.
Posso dirti qualcosa sul codice che hai postato.
Innanzitutto, ripristina la tua funzione di controllo sulla data di nascita messa in input, perché io l'ho commentata (non ho perso tempo a crearla)
Questa è il blocco di righe che devi sistemare:
controllo_data = 0;
// controllo_data=stud[i].anagrafica.data_nascita.controllo_data();
} while (controllo_data != 0);
Devi mettere il tuo metodo "controllo_data()" nella classe DataNascita che ho postato, dichiarandolo come gli altri.
Quindi abiliti la riga commentata:
// controllo_data=stud[i].anagrafica.data_nascita.controllo_data();
trasformandola in
controllo_data = . . . .
sistemandola opportunamente e commenti la riga:
controllo_data = 0;
scrivendo:
// controllo_data = 0
Tieni presente che le righe che commenti puoi anche cancellarle perché di fatto sono disattivate.
Di sicuro un problema e' rappresentato dall'uso simultaneo della classe Scanner e delle classi: InputStreamReader e BufferedReader che insieme consentono di fare le stesse operazioni della classe Scanner. Invece tu usavi casualmente l'una o le altre. Questo potrebbe dar luogo a dei problemi.
Per intenderci consideriamo queste due versioni della medesima classe.
Le due versioni fanno esattamente la stessa cosa, solo che una usa la classe Scanner e l'altra la coppia di classi InputStreamReader, BufferedReader.
Versione 1
codice:
import java.util.Scanner;
public class InputTest {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Nome: ");
String nome = in.nextLine();
System.out.print("Cognome: ");
String cognome = in.nextLine();
System.out.print("Eta': ");
int age = in.nextInt();
System.out.println("Ciao " + nome + " " + cognome);
System.out.println("Al tuo prossimo compleanno compirai: " + (age + 1) + " anni.");
}
}
Versione 2
codice:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputTest2 {
public static void main (String[] args) {
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader leggi = new BufferedReader(input);
try {
System.out.print("Nome: ");
String nome = leggi.readLine();
System.out.print("Cognome: ");
String cognome = leggi.readLine();
System.out.print("Eta': ");
int age = Integer.parseInt(leggi.readLine());
System.out.println("Ciao " + nome + " " + cognome);
System.out.println("Al tuo prossimo compleanno compirai: " + (age + 1) + " anni.");
}
catch (IOException iex) {
System.out.println("Si e' verificato il seguente errore: " + iex.getMessage());
}
}
}
Questo è quanto posso dirti al momento, ciao