Newsgroup: it.comp.java
Titolo: HELP su metodo di classe personalizzata

Salve a tutti, sono un neofita di java e avrei bisogno di un consiglio, o
meglio di un aiuto.
Ho costruito una classe personalizzata per un compitino universitario sulla
base delle specifiche che mi hanno dato;
la classe consiste in:
    un costruttore Scambiatore(char c1, char c2) che riceve come argomenti
due caratteri char;
    un metodo String applica(String s) che riceve come argomento una frase,
rileva le occorrenze del primo carattere e le sostituisce con il secondo e
viceversa;
    un metodo int numSostCarattere1() che restituisce il numero di caratteri
1 sostituiti nell'ultima chiamata a applica;
    un metodo int numSostCarattere2() che restituisce il numero di caratteri
2 sostituiti nell'ultima chiamata a applica;
Il problema si pone con gli ultimi due metodi;
per la precisione, se utilizzo i metodi una sola volta tutto funziona bene,
se li utilizzo più volte all'interno della stessa classe di test, continuano
ad incrementarsi e mi ritrovo con i valori finali che equivalgono alla somma
di tutti quelli precedenti.
Inizialmente ho pensato che fosse un problema di ambito delle variabili, ma
dopo ho notato che in ogni caso quando richiamo il costruttore inizializzo
sempre le due variabili int a 0; così sono di nuovo al punto di partenza.
Per una maggiore comprensione del problema riporto alla fine del messaggio
il codice della classe che ho creato.
Ringrazio chiunque sia più esperto di me e voglia darmi una mano.
Grazie ciao.
Denis
TESTO DELLA CLASSE Scambiatore:
class Scambiatore
{
 //CAMPI
 private char lettera1, lettera2;
 private String frase;
 private int x, y;
//COSTRUTTORI
 public Scambiatore(char c1, char c2)
 {
  lettera1 = c1;
  lettera2 = c2;
  frase = "";
  x = 0;
  y = 0;
 }
//METODI
 /**
 restituisce una stringa dove le occorrenze del carattere 1
 sono sostituite con il carattere 2
 e viceversa
 */
 public String applica(String s)
 {
  frase = s.trim();  //elimino gli spazi a destra e a sinistra della frase
  String scambiata = "";  //inizializzo la stringa finale scalata
  for(int i = 0; i<=frase.length()-1;i++)
  {
   if(frase.charAt(i) == lettera1)
   {
    scambiata = scambiata + lettera2;
    x++;
   }
   else if(frase.charAt(i) == lettera2)
   {
    scambiata = scambiata + lettera1;
    y++;
   }
   else
   {
    scambiata = scambiata + frase.charAt(i);
   }
  }
  return scambiata;
 }
 /**
 restituisce un intero che rappresenta
 il numero di sostituzioni del carattere 1
 */
 public int numeroSostCarattere1()
 {
  return x;
 }
 /**
 restituisce un intero che rappresenta
 il numero di sostituzioni del carattere 2
 */
 public int numeroSostCarattere2()
 {
  return y;
 }
}

 di tutti quelli precedenti.
Prova ad utilizzare 
private int x = 0, y = 0;
come campi.
Fammi sapere se funziona
P.S.
Perchč usi trim()?
Le frasi che vengono mandate in input sono senza spazi all'inizio e alla fine,
come trovi scritto nel testo del progetto.
-- 
Marco |First they ignore you, then they laugh at you,
      |then they fight you, then you win
      |- Mahatma Gandhi (possibly not talking about Linux!)

 Perchè usi trim()?


 anche se in effetti è abbastanza superfluo.
Mi posti il link del progetto?


Ciao, purtroppo avevo già provato anche l'ultima soluzione che mi hai
proposto.
Ti scrivo il link del progetto; nel suo insieme è composto da altre due
classi che ho già realizzato e per fortuna non mi danno problemi:
http://homes.dsi.unimi.it/prog/turnoSerale/lab/1progettinoSerale/t1.htm
ciao
Denis.
"Ralph Hinkley" <abicidie...@VALIDOyahoo.it> ha scritto nel messaggio
news:slrn9vfmq5.3fc.a...@supernova.universe...


 ha scritto nel messaggio
news:ifRJ7.121413$sq5.5...@news.infostrada.it...
