Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53

    salvare indice in array di oggetti

    salve avrei un piccolo problema, ho i dati di una banca(inseriti in un array di oggetti) composti da saldo nome cognome ecc. Una volta trovato il massimo vorrei stamparlo (facile) ma vorrei stampare anche il nome ed il cognome collegati (so che è facile ma nn ci riesco )
    posto il programma qualcuno sa dirmi come posso fare??

    codice:
    public class banca {
    	private String cogn;
    	private String nom;
    	private int sald;
    	private int num;
    	public banca(String cognome,String nome,int saldo,int numeroconto){
    		cogn = cognome;
    		nom=nome;
    		sald = saldo;
    		num = numeroconto;
    	}
    	public int saldomax(){
    		int saldo =0;
    	
    			if(sald > saldo){
    				saldo= sald;
    		
    		}
    		return saldo;
    	}
    	public String getname(){
    		return nom;
    	}
    	public String getsurname(){
    		return cogn;
    	}
    	public int getbalance(){
    		return sald;
    	}
    		public int getnumberaccount (){
    			return num;
    		
    	}
    		
    
    }


    codice:
    import javax.swing.JOptionPane;
    public class mainbanca {
    	
    	
    	public static void main(String[] args) {
    		String c ; //cognome
    		String n ; //nome
    		int s ; //saldo
    		int nc ; //numconto
    		int samax=0 ;
    		int nelementi; //numero degli elementi
    		 
    		nelementi = Integer.parseInt(JOptionPane.showInputDialog("inserire il numero di elementi da inserire"));		
    		banca[] b = new banca[nelementi];
    		
    		for (int i = 0; i < nelementi; i++){
    			n = JOptionPane.showInputDialog("inserire nome");
    			c = JOptionPane.showInputDialog("inserire cognome");
    			s = Integer.parseInt(JOptionPane.showInputDialog("inserire saldo"));
    			nc = Integer.parseInt(JOptionPane.showInputDialog("inserire numero conto"));
    			b[i] = new banca(c,n,s,nc);
    			
    		}
    		
    		int k;
    
    		
    		for(k=0; k < nelementi ;k++){
    			
    			samax = b[k].saldomax();
    
    			
    		}
    		
    		System.out.print("il saldo massimo è: "+ samax );
    		System.out.println(" ");
    		
    		System.out.print ("il proprietario del conto è: " + b[k].getname()  + " " + b[k].getsurname());   //QUESTA RIGA NON FUNZIONA PERCHè EVIDENTEMENTE NON HO   //L'INDICE CORRETTO
    		
    	}
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Beh... dichiarati altre 2 variabili e assegnaci i valori di getname() e getsurname(), esattamente come fai per la variabile samax a cui assegni il valore di saldomax().

    Che poi, secondo me, quel codice fa tutto tranne quello che ti aspetti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da LeleFT
    Beh... dichiarati altre 2 variabili e assegnaci i valori di getname() e getsurname(), esattamente come fai per la variabile samax a cui assegni il valore di saldomax().

    Che poi, secondo me, quel codice fa tutto tranne quello che ti aspetti.


    Ciao.
    come faccio ad assegnarli i valori?? Faccio una cosa del genere?

    codice:
    public String getnome(){
    String nomeee = nom;
    Return nomeee;
    No vero?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da dik1992
    come faccio ad assegnarli i valori??
    Ma scusa... alla variabile "samax" hai assegnato il valore restituito da un metodo... non mi pare difficile fare la stessa identica cosa per le altre variabili. Si scrive il nome della variabile, seguito dal segno di uguale, seguito dall'espressione che si vuole assegnare, ovvero il metodo richiamato sull'oggetto b[k]. Ti devo anche scrivere il codice di una cosa che hai già fatto tu?

    codice:
    for(k=0; k < nelementi ;k++){
       // Questo l'hai fatto tu
       samax = b[k].saldomax();
    
       // Questo te lo dovevo scrivere io?
       nome = b[k].getnome();
       cognome = b[k].getcognome();
    }
    (ovviamente le due variabili "nome" e "cognome" le dovrai dichiarare assieme alle altre sopra)

    Faccio una cosa del genere?

    codice:
    public String getnome(){
    String nomeee = nom;
    Return nomeee;
    No vero?
    Direi proprio di no...

    Ad ogni modo, il codice che hai sviluppato non fa quello che tu pensi che faccia. Ossia, non trova nessun massimo. E' tutto da rivedere, almeno come logica di funzionamento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da LeleFT
    Beh... dichiarati altre 2 variabili e assegnaci i valori di getname() e getsurname(), esattamente come fai per la variabile samax a cui assegni il valore di saldomax().

    Che poi, secondo me, quel codice fa tutto tranne quello che ti aspetti.


    Ciao.
    come faccio ad assegnarli i valori?? Faccio una cosa del genere?

    codice:
    public String getnome(){
    String nomeee = nom;
    Return nomeee;
    No vero?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da dik1992
    come faccio ad assegnarli i valori?? Faccio una cosa del genere?

    codice:
    public String getnome(){
    String nomeee = nom;
    Return nomeee;
    No vero?
    cosi non funziona perchè poi mi da sempre l'ultimo elemento (faccio il ciclo for nel main)

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    mi sapreste dire perchè mi da il valore sbagliato??

    main
    codice:
    import javax.swing.JOptionPane;
    public class mainbanca {
    	
    	
    	public static void main(String[] args) {
    		String c ; //cognome
    		String n ; //nome
    		int s ; //saldo
    		int nc ; //numconto
    		int nelementi; //numero degli elementi
    		int max=0;
    		 int d=0;
    		nelementi = Integer.parseInt(JOptionPane.showInputDialog("inserire il numero di elementi da inserire"));		
    		banca[] b = new banca[nelementi];
    		
    		for (int i = 0; i < nelementi; i++){
    			n = JOptionPane.showInputDialog("inserire nome");
    			c = JOptionPane.showInputDialog("inserire cognome");
    			s = Integer.parseInt(JOptionPane.showInputDialog("inserire saldo"));
    			nc = Integer.parseInt(JOptionPane.showInputDialog("inserire numero conto"));
    			b[i] = new banca(c,n,s,nc);
    			
    		}
    		for(int k =0; k<nelementi;k++){
    		if(b[k].massimo() > max){
    		d=k;
    		}
    		}
    		System.out.print("il saldo piu alto è: " + b[d].getnome() + " " + b[d].getsurname());
    		System.out.println(" ");
    		System.out.print("il saldo massimo è: " + b[d].massimo());
    banca.java

    codice:
    public class banca {
    	private String cogn;
    	private String nom;
    	private int sald;
    	private int num;
    	public banca(String cognome,String nome,int saldo,int numeroconto){
    		cogn = cognome;
    		nom=nome;
    		sald = saldo;
    		num = numeroconto;	
    		}
    	public int massimo(){
    		return sald;
    		
    	}
    	public String getnome(){
    		return nom;
    	}
    	public String getsurname(){
    		return cogn;
    	}
    		
    
    }

  8. #8
    Perché il valore max sarà sempre uguale a 0.

    Quindi nell'if devi anche aggiornare tale valore a quello più alto.

    codice:
    if(b[k].massimo() > max){
    	d=k;
            max=b[k].massimo();
    }
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da schumy2000
    Perché il valore max sarà sempre uguale a 0.

    Quindi nell'if devi anche aggiornare tale valore a quello più alto.

    codice:
    if(b[k].massimo() > max){
    	d=k;
            max=b[k].massimo();
    }
    Ciao.
    chissa a che stavo pensando grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.