Esercizio

di il
1 risposte

Esercizio

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.

1 Risposte

  • Re: Esercizio

    Ci sono comunque cose che non hanno senso.

    public static void inserimento(int matricola,String cognome,String nome,String nomeEsame,int voto)

    a) non ha senso che questo metodo abbia come PARAMETRI quei matricola, cognome, ecc... E' il metodo che deve chiedere in input all'utente .... non deve invocarlo qualcuno passando dei dati (altrimenti che senso avrebbe l'input?)

    b) Il metodo è void, quindi di un oggetto Studente creato dal metodo cosa ne faresti?

    c) Dove crei l'oggetto Studente? (non c'è una creazione).

    d) Usi un po' BufferedReader/InputStreamReader/System.in e un po' Scanner/System.in. Non ha molto senso.

    Rivedi un po' tutto.
Devi accedere o registrarti per scrivere nel forum
1 risposte