Aiuto sul esercizio alunno e voti

di il
1 risposte

Aiuto sul esercizio alunno e voti

Salve sto cominciando a studiare il linguaggio java e ho bisogno di un piccolo aiuto, sto creando un semplice programma che ti faccia inserire il nome e cognome dell'alunno ed i suoi voti,il problema e il seguente, nel metodo del inserimento quando inserisco i voti nel array si inseriscono senza problemi ma quando passo nel metodo della visualizzazione mi stampa tutti i voti 0 e cosi anche per la media.Potete aiutarmi per favore?.

//pagina 1
import java.io.*;
import java.lang.String;
public class Home {
public static void main(String[] args) {
int scelta=0;
String stringa;
String nome=null,cognome=null;
System.out.println("inserisci nome");
BufferedReader nome1 =new BufferedReader(new InputStreamReader(System.in));
try {
nome =nome1.readLine();
}
catch (Exception e) {
System.out.println("Errore: " + e + " nella lettura da tastiera");
System.exit(-1);
}
System.out.println("inserisci cognome");
BufferedReader cognome1 =new BufferedReader(new InputStreamReader(System.in));
try {
cognome =cognome1.readLine();
}
catch (Exception e) {
System.out.println("Errore: " + e + " nella lettura da tastiera");
System.exit(-1);
}
do{
System.out.println("*******************");
System.out.println("1)Inserimento");
System.out.println("2)Visualizzazione");
System.out.println("3)Media");
System.out.println("4)Fine");
System.out.println("*******************");
System.out.println("inserisci da dove vuoi cominciare");
BufferedReader ins =new BufferedReader(new InputStreamReader(System.in));
try {
stringa =ins.readLine();
scelta=Integer.valueOf(stringa);
}
catch (Exception e) {
System.out.println("Errore: " + e + " nella lettura da tastiera");
System.exit(-1);
}
Classe cl=new Classe(nome,cognome);
switch(scelta){
case 1:cl.inserimento();
break;
case 2:cl.visualizazzione();
break;
case 3:cl.media();
break;
case 4:cl.fine();
break;
}
}while(scelta>=1 || scelta<=4);
}

}



//pagina 2
import java.io.*;
import java.lang.String;

public class Classe {
String [] materia = new String[8];
String nome,cognome;
int [] voti = new int[8];
public Classe(String nome, String cognome){
this.nome=nome;
this.cognome=cognome;
this.materia[0]="Italiano";
this.materia[1]="Storia";
this.materia[2]="Matematica";
this.materia[3]="Inglese";
this.materia[4]="Informatica";
this.materia[5]="Sistemi";
this.materia[6]="Tpsit";
this.materia[7]="ED.fisica";
}
public void inserimento(){
int i;
String stringa;
BufferedReader ins =new BufferedReader(new InputStreamReader(System.in));
for(i=0;i<8;i++){
System.out.println("inserisci il voto per "+this.materia);

try {
stringa =ins.readLine();
voti=Integer.valueOf(stringa);
}
catch (Exception e) {
System.out.println("Errore: " + e + " nella lettura da tastiera");
System.exit(-1);
}
}
}
public void visualizazzione(){
int i;
for(i=0;i<8;i++)
{
System.out.println("il voto di " +this.materia+" e: "+voti);
}
}
public void media(){
int nn=0,media=0,totale=0;
//troviamo la media nn e il numero dei numeri
int i;
for(i=0;i<8;i++){
nn=nn+1;
totale=totale+this.voti;
}
media=totale/nn;
System.out.println("la media e:"+media);
}
public void fine(){
System.exit(-1);
}
}

1 Risposte

  • Re: Aiuto sul esercizio alunno e voti

    Ciao,

    ho riscritto il codice orientato agli oggetti con una classe che rappresenta lo pagella e una classe con il main() che esegue le operazioni di inserimento, lettura e media voti per lo studente:

    EDIT: ho modificato la classe Pagella per ritornare la media in virgola mobile (double) e la lista dei voti per materia in ordine decrescente

    Demo.java
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Demo {
    
    	public static final String[] MATERIE = { "Italiano", "Storia", "Matematica", 
    			"Inglese", "Informatica", "Sistemi",
    			"Tpsit", "ED.fisica" };
    
    	public static void main(String[] args) throws IOException {
    
    		Map<String, Integer> voti = new HashMap<>();
    		String nome;
    		String cognome;
    		Pagella pagella = new Pagella();
    		
    		System.out.println("Inserisci il nome: ");
    		BufferedReader inputNome = new BufferedReader(new InputStreamReader(System.in));
    		nome = inputNome.readLine();
    
    		System.out.println("Inserisci il cognome: ");
    		BufferedReader inputCognome = new BufferedReader(new InputStreamReader(System.in));
    		cognome = inputCognome.readLine();
    
    		LOOP: while (true) {
    
    			System.out.println(
    			"*******************\n" + 
    			"1)Inserimento\n" + 
    			"2)Visualizzazione\n" + 
    			"3)Media\n" + 
    			"4)Fine\n" + 
    			"*******************\n" + 
    			"inserisci da dove vuoi cominciare: ");
    
    			BufferedReader inputScelta = new BufferedReader(new InputStreamReader(System.in));
    			String scelta = inputScelta.readLine();
    			
    			switch (scelta) {
    			// Insert
    			case "1":
    				
    				System.out.println("Inserisci i voti (da 0 a 10) per le materie: ");
    				for (String materia : MATERIE) {
    					
    					System.out.println("-> " + materia + ": ");
    					BufferedReader inputVoto = new BufferedReader(new InputStreamReader(System.in));
    					Integer voto = Integer.parseInt(inputVoto.readLine());
    					voti.put(materia, voto);
    				}
    			
    				pagella.setNome(nome);
    				pagella.setCognome(cognome);
    				pagella.setVoti(voti);
    				
    				System.out.println("Voti salvati..\n");
    				continue;
    				
    			// Show
    			case "2":
    				
    				System.out.println("Voti per " + pagella.getNome() + " " + pagella.getCognome() + ": ");
    				Map<String, Integer> getVoti = new HashMap<>();
    				getVoti = pagella.getVoti();
    				
    				for (String materia : getVoti.keySet()) {
    					Integer voto = getVoti.get(materia);
    					System.out.println(materia + " " + voto);
    				}
    				
    				continue;
    				
    			// Average
    			case "3":
    				
    				System.out.println("Media voti per " + pagella.getNome() + " " + pagella.getCognome() + ": ");
    				System.out.println(pagella.getMedia());
    				continue;
    			// Exit
    			case "4":
    				break LOOP;
    
    			}
    		}
    		System.out.println("Uscita dal programma...");
    	}
    }
    
    Pagella.java
    
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    import static java.util.stream.Collectors.*;
    
    import java.util.Collections;
    
    public class Pagella {
    
    	private String nome, cognome;
    	private Map<String, Integer> voti;
    
    	public Pagella() {
    		voti = new HashMap<String, Integer>();
    	}
    
    	public Pagella(String nome, String cognome, Map<String, Integer> voti) {
    		this();
    		this.nome = nome;
    		this.cognome = cognome;
    		this.voti = voti;
    	}
    
    	public String getNome() {
    		return nome;
    	}
    
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    
    	public String getCognome() {
    		return cognome;
    	}
    
    	public void setCognome(String cognome) {
    		this.cognome = cognome;
    	}
    
    	public Map<String, Integer> getVoti() {
    
    		Map<String, Integer> sorted = voti.entrySet().stream()
    				.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
    				.collect(toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
    
    		return sorted;
    	}
    
    	public void setVoti(Map<String, Integer> voti) {
    		this.voti = voti;
    	}
    
    	public double getMedia() {
    
    		int sommavoti = 0;
    
    		for (int v : voti.values()) {
    			sommavoti = sommavoti + v;
    		}
    
    		return (double) sommavoti / voti.values().size();
    	}
    
    	@Override
    	public String toString() {
    		return "Pagella [nome=" + nome + ", cognome=" + cognome + ", voti=" + voti + "]";
    	}
    }
    
    Saluti,
Devi accedere o registrarti per scrivere nel forum
1 risposte