Pages: [1]   Go Down
Print
Author Topic: esercizio java problema if  (Read 1389 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
turì
Apprendista Forumista
**
Offline Offline

Posts: 275



« on: 23-11-2012, 13:07:21 »

salve colleghi, volevo una mano perché non riesco a capire cosa c'è che non va nel codice.
ho 2 classi, una BranoDigitale dove è implementata la classe con i suoi metodi, l'altra ClienteBranoDigitale dove è implementato il metodo main per verificarne la correttezza. vi posto il codice di entrambe le classi

BranoDigitale
Code:
public class BranoDigitale {

private String titolo;

private String autore;

private String formato;


BranoDigitale(String titolo, String autore) {

this.titolo=titolo;
this.autore=autore;
this.formato=null;

}

BranoDigitale(String titolo, String autore, String formato) {

this.titolo=titolo;
this.autore=autore;
this.formato=formato;

}

public String getAutore() {

return this.autore;

}

public String getTitolo() {

return this.titolo;

}

public String getFormato() {

return this.formato;

}

public void setFormato(String formato) {

this.formato=formato;

}

public boolean Uguale(BranoDigitale b) {

boolean ver=false;

if((this.getTitolo() == b.getTitolo()) &&
(this.getAutore() == b.getAutore()) &&
(this.getFormato() == b.getFormato())) {

ver=true;

}
else {

ver=false;

}

return ver;

}

}

ClienteBranoDigitale
Code:
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import javax.swing.JOptionPane;

public class ClienteBranoDigitale{

public static void stampaBranoDigitale(BranoDigitale bd){

System.out.println("Titolo = "+ bd.getTitolo() + " Autore = " + bd.getAutore() + " Formato = " + bd.getFormato());

}

public static void main(String[] args){

InputStreamReader reader=new InputStreamReader(System.in);

BufferedReader input=new BufferedReader(reader);

String[] str=new String[6];
int i=0;

try {

for(i=0;i<6;i++) {

str[i]=input.readLine();

}

}
catch (IOException e) {

System.out.println("errore "+e);
System.exit(-1);

}

BranoDigitale bd1 = new BranoDigitale(str[0],str[1],str[2]);
BranoDigitale bd2 = new BranoDigitale(str[3],str[4],str[5]);

stampaBranoDigitale(bd1);
stampaBranoDigitale(bd2);

System.out.println(bd1.Uguale(bd2));
System.out.println(bd2.Uguale(bd1));
}

}

il problema è che nel metodo Uguali della classe BranoDigitale non entra mai nell'if, anche se io do come input stesso titolo, autore e formato per entrambi gli oggetti che istanzio nel main. cosa può essere?
Logged
turì
Apprendista Forumista
**
Offline Offline

Posts: 275



« Reply #1 on: 25-11-2012, 12:37:00 »

up

edit: invece di usare nell'if l'operatore == ho usato il metodo str1.equals(str2) e adesso funziona.
mi domando: come mai funziona in un metodo e non nell'altro? è sbagliato usare l'operatore == con le stringhe?
« Last Edit: 25-11-2012, 13:14:38 by turì » Logged
LtWorf
Forumista Esperto
****
Offline Offline

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #2 on: 26-11-2012, 10:54:46 »

Nel caso di stringhe (o qualsiasi altro tipo di oggetto), le variabili rappresentano puntatori, quindi l'operatore == compara l'indirizzo dell'oggetto e non l'oggetto stesso. Quindi ti da vero solo se compari lo stesso oggetto, ma non due oggetti identici.
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
turì
Apprendista Forumista
**
Offline Offline

Posts: 275



« Reply #3 on: 26-11-2012, 14:05:27 »

grazie mille per la puntualizzazione!
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #4 on: 26-11-2012, 15:03:35 »

Nel caso di stringhe (o qualsiasi altro tipo di oggetto), le variabili rappresentano puntatori [...]
Per l'esattezza, sono chiamati reference (riferimenti) , ma ci siamo capiti pray.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: