Esercizio java vettori

di il
49 risposte

49 Risposte - Pagina 3

  • Re: Esercizio java vettori

    Ok.Risolto.Grazie
  • Re: Esercizio java vettori

    trixy ha scritto:


    Esempio:ho un vettore di 8 studenti.Se tutti gli 8 studenti hanno età<21 stampa nessun idoneo
    Giusto per dare una idea con Stream/lambda (Java 8+):
    Studente[] arrStudenti = .........
    
    if (Arrays.stream(arrStudenti).allMatch(stud -> stud.getAnni()<21)) {
        // Tutti gli studenti hanno meno di 21 anni
    }
  • Re: Esercizio java vettori

    A proposito di vettori mi viene in mente questa domanda:
    Vorrei memorizzare i dati di uno studente e di questo vorrei inserire i voti relativi a diverse discipline.Esempio:
    Cognome: Tizio Nome Caio Matematica: 2,6,7,8
    Italiano: 7,7,7,9
    ed fisica: 10,10,10
    Cognome .... Nome:......ecc

    Si può fare solo con un vettore dinamico?
  • Re: Esercizio java vettori

    trixy ha scritto:


    Vorrei memorizzare i dati di uno studente e di questo vorrei inserire i voti relativi a diverse discipline.Esempio:
    Cognome: Tizio Nome Caio Matematica: 2,6,7,8
    Italiano: 7,7,7,9
    ed fisica: 10,10,10
    Cognome .... Nome:......ecc

    Si può fare solo con un vettore dinamico?
    Gli array non si espandono. Se per "dinamico" intendi espandibile, allora ci sono le collezioni (liste, set, mappe, ecc..)
  • Re: Esercizio java vettori

    La risposta è negativa se non conosco le liste,set e mappe?
    P.S.:volevo scrivere array dinamico=vettore
  • Re: Esercizio java vettori

    trixy ha scritto:


    La risposta è negativa se non conosco le liste,set e mappe?
    Ok

    trixy ha scritto:


    P.S.:volevo scrivere array dinamico=vettore
    In Java ci sono gli array. Che NON sono di per sé ridimensionabili. Quello che si può fare (ed è quello che fanno sotto-sotto le "collezioni" che sfruttano un array) è istanziare un nuovo array un po' più grande, ricopiare gli elementi dal vecchio array e poi "buttare" via il vecchio array tipicamente e banalmente aggiornando la variabile che tiene l'array.
  • Re: Esercizio java vettori

    Secondo voi questo esercizio come potrebbe essere fatto?
    Si crei un registro scolastico utlizzando un vettore per memorizzare l'anagrafica degli studenti e i voti della prove di matematica.
    All'inizio avevo creato un vettore che memorizza anagrafica e voti. Poi mi sono accorto che in quel modo riuscivo a memorizzare solo un voto. allora ho creato un sottomenu che mi permette di inserire più voti, solo che non riesco a stampare l'anagrafica di uno studente con 5 voti, per esempio.
  • Re: Esercizio java vettori

    trixy ha scritto:


    allora ho creato un sottomenu che mi permette di inserire più voti, solo che non riesco a stampare l'anagrafica di uno studente con 5 voti, per esempio.
    Innanzitutto dovresti chiarire come hai "modellato" le cose a livello di classi-oggetti.

    Vedendo gli esempi che hai scritto, come minimo si potrebbe fare qualcosa del tipo:
    public class Studente {
        private String nome;
        private String cognome;
        private int[] votiMatematica;
        private int[] votiItaliano;
        // ....
    }
    Poi chiaramente bisogna gestire questi array. Presupponendo che alla costruzione di un Studente vengano creati array "vuoti" (lunghezza 0), nella classe Studente potresti esporre un metodo es. aggiungiVotoMatematica che dato un voto lo aggiunge nell'array secondo la logica che ti ho descritto prima.
  • Re: Esercizio java vettori

    Con gli array credo di non avere problemi.Mi cercavo di sforzare a farlo con un unico vettore, dato che esso è sempre un array ma di dimensione indefinita. Ma forse non si può.
    class Studente {
    	 private String nome;
    	 private String cognome;
    	 private int voto;
    	 public String setNome(String nome)
    	 {
    		 this.nome=nome;
    		 return nome;
    	 }
    	 public String setCognome(String cognome)
    	 {
    		 this.cognome=cognome;
    		 return cognome;
    	 }
    	 public int setVoto(int voto)
    	 {
    		 this.voto=voto;
    		 return voto;
    	 }
    	 public int getVoto()
    	 {
    		 return voto;
    	 }
    	 public void stampa()
    	 {
    		 System.out.printf("%-15s %-15s %n",nome,cognome); 
    		 System.out.printf("%4d %n",voto);
    	 }
    }
    import java.util.Vector;
    
    class Pagella {
    	 
    	 private Vector pagella;
    	 private Vector voti;
    	 
    	 public Pagella()
    	 {
    		 pagella  = new Vector (1,1);
    		 voti = new Vector (1,1);
    	 }
    	 public void aggiungiStudente (Studente s)
    	 {
    		 pagella.addElement(s);
    	 }
    	 public void aggiungiVoto (Studente v)
    	 {
    		 voti.addElement(v);
    	 }
    	 public void visualizza()
    	 {
    		 Studente s;
    		 Studente v;
    		 System.out.println("\n\t\t\t*** Studente ***");
    		 for (int i=0; i<pagella.size(); i++)
    		 {
    			 for(int n=0; n<voti.size(); n++) {
    			 s=(Studente) pagella.elementAt(i);
    			 v=(Studente) voti.elementAt(i);
    			 v.stampa();
    			 s.stampa();}
    		 }
    	 }
    
    }
    
    import java.util.Scanner;
    
    public class ProgStudenti {
    	private Scanner stdIn = new Scanner (System.in);
    	private static final int AGGIUNTA = 1;
    	private static final int ADDVOTO = 1;
    	private static final int RITORNO  = 2;
    	private static final int VISUALIZZAZIONE = 2;
    	private String fine;
    	private static final int INDIETRO = 3;
    	
    	private Pagella pagella = new Pagella();
    	public static void main(String[] args) {
    		ProgStudenti progStudenti = new ProgStudenti();
    		progStudenti.immissione();
    	}
    		private void immissione()
    		{
    			int opzione;
    			do {
    				opzione=leggiOpzione();
    				switch(opzione) {
    				case AGGIUNTA: addStudente();break;
    				case VISUALIZZAZIONE: visualizza();break;	
    				}
    			}while(opzione!=3);
    		}
    		private void mostraMenu()
    		{
    			System.out.println();
    			System.out.println("\n\t\t\t *** MENU ***");
    			System.out.println();
    			System.out.println("1\tInserisci studente");
    			System.out.println("2\tVisualizza");
    			System.out.println("3\tEsci");
    		}
    		private void mostraSubMenu()
    		{
    			System.out.println("1\tInserisci voti prova di matematica");
    			System.out.println("2\tRitorna al menù precedente");
    		}
    		private void addStudente()
    		{
    			Studente s = new Studente();
    			Studente v = new Studente ();
    			String cognome = leggiCognome();
    			s.setNome(cognome);
    			String nome = leggiNome();
    			s.setCognome(nome);
    		//	int voto = leggiVoto();
    		//	s.setVoto(voto);
    			pagella.aggiungiStudente(s);
    			pagella.aggiungiVoto(v);
    		//	mostraSubMenu();
    			int selezione;
    		//	do {
    			 selezione=leggiSelezione();
    			 switch(selezione) {
    			 case ADDVOTO: do {int voto=leggiVoto();v.setVoto(voto);}while(leggiVoto()!=00);break;
    			 case RITORNO: int opzione; opzione=leggiOpzione();break;
    			 }
    			// System.out.print("Inserisci il voto:");
    		    // int voto=leggiVoto();
    		    // s.setVoto(voto);
    		    // pagella.aggiungiStudente(s);
    		    // }while(selezione!=INDIETRO);
    		}
    		private String leggiCognome()
    		{
    			System.out.print("Inserisci il cognome:");
    		     String cognome=stdIn.nextLine();	     
    		     return cognome;
    		}
    		private String leggiNome()
    		{
    			System.out.print("Inserisci il nome:");
    		     String nome=stdIn.nextLine();
    		     return nome;
    		}
    /*		private void addVoto()
    		{
    			mostraSubMenu();
    			Studente s = new Studente();
    			int selezione;
    			do {
    			 selezione=leggiSelezione();
    			 System.out.print("Inserisci il voto:");
    		     int voto=leggiVoto();
    		     s.setVoto(voto);
    		     pagella.aggiungiStudente(s);
    		     }while(selezione!=INDIETRO);
    		}*/
    		private int leggiVoto()
    		{
    			System.out.print("Inserisci voti della prova:");
    			int voto;
    			voto=stdIn.nextInt();
    			stdIn.nextLine();
    			return voto;
    		}
    		private int leggiOpzione()
    		{
    			mostraMenu();
    			System.out.println("Seleziona opzione");
    			int opzione;
    			//System.out.print("Premere 1 per aggiungere uno studente, qualsiasi altro numero per terminare l'immissione dei dat: ");
    			opzione=stdIn.nextInt();
    			 stdIn.nextLine();
    			return opzione;
    		}
    		private int leggiSelezione()
    		{
    			mostraSubMenu();
    			System.out.println("Selezione opzione");
    			int selezione;
    			selezione=stdIn.nextInt();
    			stdIn.nextLine();
    			return selezione;
    		}
    		private void visualizza()
    		{
    			pagella.visualizza();
    			System.exit(0);
    		}
    		
  • Re: Esercizio java vettori

    trixy ha scritto:


    Mi cercavo di sforzare a farlo con un unico vettore, dato che esso è sempre un array ma di dimensione indefinita.
    Sì ma è una "collezione", non un array (tra l'altro una "vecchia" collezione legacy). E scusa, tu prima non dicevi "se non conosco le liste,set e mappe" ??

    trixy ha scritto:


    class Studente {
    	 private String nome;
    	 private String cognome;
    	 private int voto;
    
    Perché Studente dovrebbe avere 1 voto??

    trixy ha scritto:


    import java.util.Vector;
    
    class Pagella {
    	 
    	 private Vector pagella;
    	 private Vector voti;
    	 
    	 public Pagella()
    	 {
    		 pagella  = new Vector (1,1);
    		 voti = new Vector (1,1);
    	 }
    	 public void aggiungiStudente (Studente s)
    	 {
    		 pagella.addElement(s);
    	 }
    	 public void aggiungiVoto (Studente v)
    	 {
    		 voti.addElement(v);
    	 }
    	 public void visualizza()
    	 {
    		 Studente s;
    		 Studente v;
    		 System.out.println("\n\t\t\t*** Studente ***");
    		 for (int i=0; i<pagella.size(); i++)
    		 {
    			 for(int n=0; n<voti.size(); n++) {
    			 s=(Studente) pagella.elementAt(i);
    			 v=(Studente) voti.elementAt(i);
    			 v.stampa();
    			 s.stampa();}
    		 }
    	 }
    
    }
    
    Questo, da come la vedo io, non ha affatto senso.
  • Re: Esercizio java vettori

    Sì ma è una "collezione", non un array (tra l'altro una "vecchia" collezione legacy). E scusa, tu prima non dicevi "se non conosco le liste,set e mappe" ??
    Al solito il mio libro spiega i vettori e poi lascia questo come esercizio. Io lo avrei fatto con gli array.
    Perché Studente dovrebbe avere 1 voto??
    In realtà non specifica quanti voti attribuire....Inizialmente avevo fatto: prova di italiano e memorizzavi un tot di voti e funziona ma solo che memorizza solo l'ultimo voto e uno zero.

    La versione della classe pagella è l'ultima che mi è rimasta in memoria dopo vari tentativi di memoizzare più voti per singolo studente.
    Quindi secondo te devo abbandonare il metodo vettore e utilizzo gli array?
    public class Studente {
        private String nome;
        private String cognome;
        private int[] votiMatematica;
        private int[] votiItaliano
    ;
    al posto di int [] votiMatematica....votiItaliano... potrei usare un vettore?
  • Re: Esercizio java vettori

    trixy ha scritto:


    La versione della classe pagella è l'ultima che mi è rimasta in memoria dopo vari tentativi di memoizzare più voti per singolo studente.
    Quindi secondo te devo abbandonare il metodo vettore e utilizzo gli array?
    public class Studente {
        private String nome;
        private String cognome;
        private int[] votiMatematica;
        private int[] votiItaliano;
    Questo è il "minimo" che puoi fare per avere N voti. Ci sono altri "design" un pochino migliori, pur mantenendo gli array. Come fare una classe es. Voti che "incapsula" l'array e che offre metodi intuitivi per aggiungere ecc.. i voti. Ma non cambia il problema della gestione dell'array (semmai la incapsula, in modo da non ripeterla).

    trixy ha scritto:


    al posto di int [] votiMatematica....votiItaliano... potrei usare un vettore?
    Se conosci Vector, la collezione, se vuoi sì. Ma Vector contiene oggetti (es. Integer) non valori primitivi.
  • Re: Esercizio java vettori

    Ese convertissi il vettore in array??
    Magari l'esercizio è stato dato così in modo da utilizzare il casting....
  • Re: Esercizio java vettori

    trixy ha scritto:


    Ese convertissi il vettore in array??
    Magari l'esercizio è stato dato così in modo da utilizzare il casting....
    Che detto così non vuol dire nulla, dato che un conto è un int[] e tutto un altro conto è un Vector (o per dirlo meglio con i generics, un Vector<Integer> ). Che sono due cose ben diverse e non convertibili tra di loro con un banale "cast".
  • Re: Esercizio java vettori

    A tempo perso ho provato a fare uan cosa del genere:
    import java.util.Scanner;
    import java.util.Vector;
    
    public class ProgRegistro {
    	private Scanner stdIn=new Scanner (System.in);
    	private static final int AGGIUNTA = 1;
    	private static final int ADDVOTO = 1;
    	private static final int VISUALIZZAZIONE = 2;
    	private static final int INDIETRO = 2;
    	private static final int ESCI = 3;
    	private Vector pagella = new Vector (1,1);
    	public static void main(String[] args) {
    		ProgRegistro progRegistro = new ProgRegistro();
    		progRegistro.immissione();
    	}
    	private void immissione()
    	{
    		int opzione;
    		do {
    			opzione=leggiOpzione();
    			switch(opzione) {
    			case AGGIUNTA: addStudente();break;
    			case VISUALIZZAZIONE: visualizza();break;}
    			}while(opzione!=2);
    		}
    	private int leggiOpzione()
    	{
    		mostraMenu();
    		System.out.println("Seleziona opzione:");
    		int opzione;
    		opzione=stdIn.nextInt();
    		stdIn.nextLine();
    		return opzione;
    	}
    	private void mostraMenu()
    	{
    		System.out.println();
    		System.out.println("\n\t\t\t *** MENU ***");
    		System.out.println();
    		System.out.println("1\tInserisci studente");
    		System.out.println("2\tVisualizza");
    		System.out.println("3\tEsci");
    	}
    	private void addStudente()
    	{
    		Studente s =new Studente();
    		String cognome=leggiCognome();
    		s.setCognome(cognome);
    		String nome=leggiNome();
    		s.setNome(nome);
    		pagella.addElement(cognome);
    	    pagella.addElement(nome);
    		Object[] stud = pagella.toArray();
    	    mostraSubMenu();
    	    int selezione;
    	    	selezione=leggiSelezione();
    	    	switch(selezione) {
    	    	case ADDVOTO: do {int voto=leggiVoto();s.setVoto(voto);pagella.addElement(voto);}while(leggiVoto()!=00);break;
    	    	case INDIETRO: int opzione; opzione=leggiOpzione();break;
    	    }
    	    }Object[] mark = pagella.toArray();
    	private int leggiSelezione()
    	{
    		int selezione;
    		System.out.print("Selezione opzione: ");
    		selezione=stdIn.nextInt();
    		stdIn.nextLine();
    		return selezione;
    	}
    	private int leggiVoto()
    	{
    		int voto;
    		System.out.print("Inserisci il voto della prova: ");
    		voto=stdIn.nextInt();
    		stdIn.nextLine();
    		return voto;
    	}
    	
    	private String leggiCognome()
    	{
    		System.out.println("Inserisci il cognome: ");
    		String cognome=stdIn.nextLine();
    		return cognome;
    	}
    	private String leggiNome()
    	{
    		System.out.println("Inserisci il nome: ");
    		String nome=stdIn.nextLine();
    		return nome;
    	}
    	private void mostraSubMenu()
    	{
    		System.out.println("1\tInserisci voti di matematica");
    		System.out.println("2\tRitorna la menù precedente");
    	}
    	private void visualizza()
    	{
    		Object[] stud = pagella.toArray();
    		Object[] mark = pagella.toArray();
    		for(int i=0; i<pagella.size(); i++) {
    			System.out.printf("%-15s %-15s ", stud,mark);}
    
    	}
    
    
Devi accedere o registrarti per scrivere nel forum
49 risposte