 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
fedePerazzi Guest
|
Posted: Fri Jul 29, 2005 1:48 am Post subject: Stringhe |
|
|
ho un proble ma: devo mettere in ordine alfabetico delle stringhe... il
punto e' che nn riesco a capire perche' la prima versione del problema nn
funziona mentre la seconda si???
Grazie mille ciao
PRIMO CASO NN FUNZIONA
import java.io.*;
public class OrdineAlfabetico
{
public static void main (String args[])throws IOException
{
InputStreamReader x=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(x);
System.out.println("inserire due stringhe");
String a=input.readLine();
String b=input.readLine();
TestOrdineAlfabetico.oro(a,b);
System.out.println(a+"n"+b+"n"+c+"n"+d);
}
public static void oro(String a,String b)
{
if(a.compareTo(b)>0)
{
String swap=new String(a);
a=new String(b);
b=new String(swap);
}
}
SECONDO CASO FUNZIONA
import java.io.*;
public class OrdineAlfabetico
{
public static void main (String args[])throws IOException
{
InputStreamReader x=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(x);
System.out.println("inserire DUE stringhe");
String a=input.readLine();
String b=input.readLine();
if(a.compareTo(b)>0)
{
String swap=new String(a);
a=new String(b);
b=new String(swap);
System.out.println(a+"n"+b);
}
}
|
|
| Back to top |
|
 |
trive Guest
|
Posted: Fri Jul 29, 2005 7:36 am Post subject: Re: Stringhe |
|
|
"fedePerazzi" <fedeperazzi (AT) virgilio (DOT) it> ha scritto nel messaggio
news:rVfGe.16487$2U1.1113898 (AT) news3 (DOT) tin.it...
| Quote: | TestOrdineAlfabetico.oro(a,b);
System.out.println(a+"n"+b+"n"+c+"n"+d);
|
Dov'è che dichiari le variabili "c" e "d" ?
|
|
| Back to top |
|
 |
pb Guest
|
Posted: Fri Jul 29, 2005 8:15 am Post subject: Re: Stringhe |
|
|
La questione dovrebbe essere questa.
Nel primo caso tu usi un metodo per modifcare le stringhe, nel secondo no.
Quando usi il metodo passi i parametri "per valore" che nel caso degli
oggetti vuol dire che passi "per valore" il riferimento.
Quindi tu puoi modificare l'oggetto senza modificare il riferimento stesso;
cioè se modifichi i campi del parametro, modifichi anche i campi
dell'oggetto "originale" perche' i due riferimenti sono uno copia dell'altro
e puntano allo stesso oggetto. Ma se all'interno del metodo modifichi il
riferimento e lo fai puntare a qualcos'altro, l'oggetto "originale" non
cambia.
Nel tuo secondo caso: l' "a" che usi come variabile e l'a che usi come
parametro puntano allo stesso oggetto ma sono due riferimenti diversi, uno
copia del valore dell'altro. Se fai puntare il secondo (all'interno del
metodo) a qualcos'altro, l"a" variabile non cambia il suo riferimento.
(Nel tuo primo caso funziona tutto perche' non ci sono parametri, fai tutto
sugli oggetto "originali")
Non so se mi sono spegato decentemente e non so nenache se il codice sotto
ti puo' chiarire le idee...
public class OrdineAlfabetico{
public static void main(String args[]){
Ogg a = new Ogg("zzz");
Ogg b = new Ogg("aaa");
oro(a, b);
System.out.println(a.z+"n"+b.z);
}
public static void oro(Ogg a, Ogg b){
if(a.z.compareTo(b.z)>0){
a.z = a.z.toUpperCase();
}
}
}
class Ogg{
String z;
Ogg(String z){
this.z = z;
}
}
--
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|