Visualizzazione dei risultati da 1 a 10 su 10

Discussione: parametri i metodi

  1. #1
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87

    parametri i metodi

    salve ragazzi, ho un problema, sono alle I armi con java, ho da implementare un metodo(BankAcount.equals) che verifica se 2 conti bancari sono uguali ed è definito in questo modo:
    public class BankAccount{
    public boolean equals(BankAccount other){
    }
    }
    ora ho 2 domande da porvi,
    1) che significa quando ad 1 metodo si passa come parametro BankAccount????
    2) come si implementa qusto metodo????

    Grazie mille
    :master:
    Adp

  2. #2
    1- significa che al metodo si passa un'altra istanza di BankAccount.
    2- beh, devi prima di tutto dirmi quando 2 istanze di BankAccount sono uguali
    I DON'T Double Click!

  3. #3
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    allora : due conti sono uguali quando hanno lo stesso valore numerico, cioè lo stess importo
    Adp

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora probabilmente la tua classe BankAccount avrà dei metodi setters/getters per accedere a e modificare determinati "campi" tipici del tuo oggetto BankAccount. In particolare suppongo avrà un metodo getBalance() o come altro lo avete chimato, che restituirà un float/double/int del caso con l'ammontare del conto.

    Tutto ciò per dire che il tuo metodo equals probabilmente sarà qualcosa del genere:

    codice:
    public boolean equals(BankAccount other) {
      return (this.getBalance() == other.getBalance());
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    si è come pensi, ti invio il codice completo.
    package I_parte;
    public class BankAccount {
    public BankAccount()
    {conto=0;}
    /*costruttore imposta il conto iniziale ad un valore preciso*/
    public BankAccount(double contoiniziale){
    conto=contoiniziale;
    }//metodo
    public void deposito(double importo){
    conto = conto+ importo;
    }
    public void prelievo(double importo){
    conto = conto-importo;
    }
    public double saldo(){
    return conto;

    }
    public boolean equals(BankAccount other) {
    return (this.saldo() == other.saldo());
    }
    //variabile istanza inizializzata nel costruttore
    private double conto;
    }

    Ora vorrei sapere come faccio a testare questa classe.
    faccio una classe che contiene il metodo main
    e creo una nuova istanza di oggetto BankAccount in qusto modo:
    BankAccount conto = new BankAccount(importo);
    con una System.out.println inserisco una cifra che li aggiungo a saldo:
    double soldi = input.nextDouble();
    conto.deposito(soldi);
    ora il mio saldo lo osso ottenere cosi:
    conto.saldo()
    ma il valore other.saldo(), del metodo equals come e dove lo prendo?
    grazie
    Adp

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    il tuo metodo equals prende come parametro una classe BankAccount.
    Quindi nel main devi creare 2 oggetti BankAccount.
    E quando chiemerai equals farai una cosa simile
    codice:
    .....
    if( bankAccountUno.equals( bankAccountDue ) ){
    ...
    }
    ....
    Spero di essermi fatto capire.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  7. #7
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87

    Allora la mia classe è questa
    package I_parte;
    public class BankAccount {
    public BankAccount()
    {conto=0;}
    /*costruttore imposta il conto iniziale ad un valore preciso*/
    public BankAccount(double contoiniziale){
    conto=contoiniziale;
    }//metodo
    public void deposito(double importo){
    conto = conto+ importo;
    }
    public void prelievo(double importo){
    conto = conto-importo;
    }
    public double saldo(){
    return conto;

    }
    public boolean equals(BankAccount other) {
    if (this.saldo() == other.saldo())
    return true;
    else
    return false;
    }
    //variabile istanza inizializzata nel costruttore
    private double conto;
    }


    il mio main è questo:
    package I_parte;
    import java.util.Scanner;
    public class BankAccEserc {
    public static void main(String[] args){
    Scanner input= new Scanner(System.in);
    System.out.println("inserisci un saldo iniziale");
    double importo = input.nextDouble();
    BankAccount conto= new BankAccount(importo);
    BankAccount conto1 = new BankAccount(importo);
    System.out.println("Confronto");
    System.out.println("inserisci conto");
    int other = input.nextInt();
    conto.equals(other);
    if( conto.equals( conto1 ) ){
    System.out.println("conti uguali");
    }
    else
    System.out.println("conti diversi");
    System.out.println("depositare!");
    double denaro = input.nextDouble();
    conto.deposito(denaro);
    System.out.println("il conto è di:" +conto.saldo());
    System.out.println("Prelievo");
    double soldi = input.nextDouble();
    conto.prelievo(soldi);
    System.out.println("il conto è di:" +conto.saldo());

    }
    }
    come vedi faccio fare varieoperazioni a main, deposito prelievo e tra cui anche il confronto, ma esce sempre che i conti sono uguali, nn capisco in che modo devo passare i valore che inserisco da input other alla classe BankAccount, ho l'impressione che siccome nella class BankAccount ho questo confronto:
    if (this.saldo() == other.saldo()), che venga confrontato lo stesso importo, giacche'sia this che other richiamano saldo!, quind come faccio a passare il valore che inserisco da input per other alla classe BankAccount???
    grazie
    Adp

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Il codice va postato senguendo quanto indicato dal regolamento, ovvero indentato e all'interno degli appositi tag (vedi Regolamento, per il dettaglio).

    Il codice che hai postato finora è praticamente illeggibile...


    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

  9. #9
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    I tag code!!! E' illeggibile!
    Cmq non ti da errore questa linea di comando?
    codice:
    conto.equals(other);
    Anche perchè passi un intero e non una classe.

    poi istanzi le classi con lo stesso importo e lo modifichi dopo l'if di controllo, quindi ovvio che non ti darà importi differenti.

    Cmq, il metodo equals è meglio scriverlo come era scritto prima
    codice:
    return ( this.saldo() == other.saldo() )
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  10. #10
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    ok classe BanckAccount
    codice:
    codice:
    package I_parte;
    public class BankAccount {
    	public BankAccount()
    	{conto=0;}
    	/*costruttore imposta il conto iniziale ad un valore preciso*/
    public BankAccount(double contoiniziale){
    	conto=contoiniziale;
    }//metodo	
    public void deposito(double importo){
    	conto = conto+ importo;
    }
    public void prelievo(double importo){
    	conto = conto-importo;
    }
    public double saldo(){
    	return conto;
    	
    }
    public boolean equals(BankAccount other) {
    	  if  (this.saldo() == other.saldo())
    		  return true;
    	  else
    		  return false;
    	}
    //variabile istanza inizializzata nel costruttore
    private double conto;
    }
    e la classe del main

    codice:
    package I_parte;
    import java.util.Scanner;
    public class BankAccEserc {
    	public static void main(String[] args){
    		Scanner input= new Scanner(System.in);
    		System.out.println("inserisci un saldo iniziale");
    		double importo = input.nextDouble();
    		BankAccount conto= new BankAccount(importo);
    		BankAccount conto1 = new BankAccount(importo);
    		System.out.println("Confronto");
    		System.out.println("inserisci conto");
    		int other = input.nextInt();
    		conto.equals(other);
    		if( conto.equals( conto1 ) ){
    			System.out.println("conti uguali");
    		}
    		else
    			System.out.println("conti diversi");
    		System.out.println("depositare!");
    		double denaro = input.nextDouble();
    		conto.deposito(denaro);
    		System.out.println("il conto è di:" +conto.saldo());
    		System.out.println("Prelievo");
    		double soldi = input.nextDouble();
    		conto.prelievo(soldi);
    		System.out.println("il conto è di:" +conto.saldo());
    		
    	}
    }
    spero che adesso è piu leggibile
    Adp

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 © 2026 vBulletin Solutions, Inc. All rights reserved.