Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [Java]Stampa oggetto

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152

    [Java]Stampa oggetto

    ciao a tutti
    stavo facendo un progettino in Java e mi sono imbattuto nel seguente problema.
    Il mio progetto ha fondamentalmente due oggetti A e B. l oggetto B viene utilizzato dentro l'oggetto A. Per essere piu chiaro l'oggetto B è proprio uno degli attributi di A.
    Quando vado a stampare sullo schermo l'oggetto A ,che comprende anche il B, mi stampa quei simboli strani che di solito escono fuori quando si stampa un array col System.out
    Qualcuno di voi sai come mai accade? e se magari dovrei defnire una classe speciale per stampare l'ggetto A?

  2. #2
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Non credo di aver capito qual'è il problema.. potresti essere più chiaro?
    Allora hai due classi, A e B giusto? e crei un oggetto B all'interno di A (se ho capito bene)

    cosa vuoi stampare di preciso? se vuoi stampare il valore di una variabile o il ritorno di un metodo devi richiamarli nel modo giusto, per esempio

    System.out.print(A.nomevariabile)
    System.out.print(A.nomeMetodo());

    Stampando solo A (o B, ripeto non ho ben capito come hai strutturato il programma) ti viene restituito il puntatore dell'oggetto, non il contenuto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    ok cercherò di essere piu chiaro.
    Ho un oggetto A che ha 2 attributi: una stringa ,e un oggetto di nome B.
    Ho fatto un array di oggetti A e B e li voglio stampare (con un metodo "visualizza" per array). Al momento della stampa il risultato sono delle stringhe senza senso del tipo "[@#[". Lo stesso accade anche se stampo un solo oggetto "A" e comunque sono certo di aver definito la classe "visualizza" correttemente

  4. #4
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Ok, la classe A è così formata:
    String nomestringa
    B nomeoggettoB = new B

    (l'oggetto B com'è strutturato?)
    comunque della classe A cosa vuoi stampare? la stringa?
    se è così devi dichiarare pubblica la stringa all'interno della classe A (public String nomestringa), poi per stamparne il valore devi chiamare
    codice:
    System.out.print(A.nomedellastringa)
    se devi stampare qualche proprietà dell'oggetto B richiamato all'interno di A:
    codice:
    System.out.print(A.nomeoggettoB.nomestringa)
    comunque se posti il codice capisco meglio il problema..

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    i due ogg sono i seguenti

    codice:
    class Prova{
    public String nome;
    	public giornata  gio; //questo deve essere un oggetto
    	public Squadra(String c, giornata gio){
    		this.nome=c;
    		this.gio=gio;
    	}
    	public String getC(){
    		return nome;
    	}
    	public giornata getG(){
    		return gio;
    	}
    	public String toStrng(){
    		return "Nome: "+nome+" statistiche: "+gio;
    	}
    }
    IL SECONDO + QUESTO

    codice:
    class giornata{
    	public int V;
    	public int P;
    	public int S;
    	public giornata(int v, int p, int s){
    		this.V=v;
    		this.P=p;
    		this.S=s;
    	}
    	public int getV(){
    		return V;
    	}
    	public int getP(){
    		return P;
    	}
    	public int getS(){
    		return S;
    	}
    	public String toString(){
    		return "V: "+V+" P: "+P+" S: "+S;
    	}
    }
    il main deve fare semplicemente questo

    codice:
    class Prova1{
        public static void main(String[]args){
    		Prova u;
    		u=new Prova("Jack",new giornata(1,1,1));
    		System.out.println(u);
    	}
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    @LuckySevenRoX: Approccio sbagliato e sconveniente.

    @keykode20:
    Perchè dichiari tutte le variabili di istanza come public?

    Stai inoltre "violando" le convenzioni di Java. L'iniziale del nome della classe deve essere maiuscolo e le variabili di istanza devono iniziare con la lettera iniziale minuscola.
    Inoltre non credo tu abbia provato il codice per ora, poichè hai creato la classe Prova, ma hai creato un costruttore Squadra con 2 parametri...

    Funzionerebbe... se sistemassi il nome del metodo toString() nella classe Prova. Se ci fai caso, manca una i


    PS: Comunque la stringa incomprensibile di cui parli, è un indirizzo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    sono due ore che impazzisco... pensavo che mi doveva dare errore se il metodo "toString" era scritto male... quindi ciò significa che se scrivo al posto di toString "visualizza" o "stampa" allora andrà bene uguale?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    anzi no nn è lo stesso... ho provato a cambiare e mi da lo stesso errore... ora ho capito tutto grazie! ah solo una cosa... le variabili di istanza devono iniziare con la maiuscola giusto? quindi deve essere public int G
    public int F ecc... ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da keykode20
    anzi no nn è lo stesso... ho provato a cambiare e mi da lo stesso errore... ora ho capito tutto grazie! ah solo una cosa... le variabili di istanza devono iniziare con la maiuscola giusto? quindi deve essere public int G
    public int F ecc... ?
    Io
    L'iniziale del nome della classe deve essere maiuscolo e le variabili di istanza devono iniziare con la lettera minuscola.

    sono due ore che impazzisco... pensavo che mi doveva dare errore se il metodo "toString" era scritto male... quindi ciò significa che se scrivo al posto di toString "visualizza" o "stampa" allora andrà bene uguale?
    Credo di essere stato chiaro francamente... io ti ho detto che hai scritto "toStrng()" (manca la i) al posto di "toString()"

    Inoltre, pensa bene a quanto hai scritto: toString() è ereditato da Object. Se dichiari un metodo, come può darti errore? Per lui toStr(), toStringz(), toS() sono tutte dichiarazioni di metodi validi... sono i metodi che dichiari tu! Sta a te ridefinire il metodo, ed ovviamente deve avere lo stesso nome se vuoi che venga chiamata la tua versione di toString().


    I metodo getter vanno bene comunque; però come ho già detto, evita le variabili dichiarate come public.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    ma se metto tutti private mi da un errore quando vado a eseguire nel main.. mi dice "has private access in Squadra" (nella console) cmq che differenza c'è fra public e private? quand'è che devo usare uno e quando l'altro?

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.