Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    6

    [java] inizializzare una stringa

    Ciao a tutti,

    sono nuovo di java e non capisco il seguente comportamento:
    ho creato questa funzione:

    private void AnalyzeResult(String result){
    String FirstToken;
    String SecondToken;

    StringTokenizer st = new StringTokenizer(result,
    String.valueOf((char) 5));
    if (st.countTokens() == 2){
    FirstToken = st.nextToken();
    SecondToken = st.nextToken();
    }...


    utilizzando jbuilder ho notato che le stringe FirstToken e secondToken
    perdono il loro valore non appena escono dall'istruzione if.

    Se però le dichiaro cosi:
    String FirstToken = "";
    String SecondToken = "";

    mantengono il valore associato anche usendo dall'if.
    Quello che non capisco è il comportamento, cioè se la variabile ha scope
    a
    livello di funzione per quale motivo perdono il loro valore?

    grazie per le eventuali risposte

    alla prossima...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Nel primo caso hai solo dichiarato le variabili, nel secondo le hai anche inizializzate...


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    6
    quindi se inizializzo una stringa dentro un blocco di codice (nel caso specifico un if) quando ne esce perde il valore assegnato?

    non capisco...
    Forse ho sbagliato qualcosa utilizzando l'oggetto tokenizer??

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Se la inizializzi dentro al ciclo, usendo perdi il valore... Inizializzandola invece fuori il ciclo gli da il valore e lo mantieni anche dopo...


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Non capisco cosa intendi per "perdere il loro valore". Se alle due stringhe viene assegnato un valore nel blocco if, all'uscita di esso il valore verra' sicuramente mantenuto. Invece se il blocco if non viene eseguito le stringhe manterranno il valore dell'inizializzazione (null o "").
    Ciao,
    Lorenzo

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    6
    allora,

    se scrivo

    String FirstToken;
    ...

    ed "entro" nel blocco if la variabile acquisisce un valore ad esempio
    FirstToken = "ciao"
    appena esce dal blocco if la variabile FirstToken ritorna a ""

    Se dechiaro invece:
    String FirstToken = "";
    ..
    ed entro nel blocco if la variabile acquisisce un valore (FirstToken = "ciao")
    ad all'uscita dal blocco if mantiene il valore ottenuto nel blocco.

    bho.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Prova a postare il codice di tutta la classe, se non e' troppo esteso.
    Ciao,
    Lorenzo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    6
    capito!

    è un piccolo "bug" (se vogliamo chiamarlo cosi') di jbuilder 5.
    Infatti la variabile FirstToken e SecondToken vengono utilizzate solo come appoggio nel blocco if:

    String FirstToken;
    String SecondToken;

    StringTokenizer st = new StringTokenizer(result,
    String.valueOf((char) 5));
    if (st.countTokens() == 2){
    FirstToken = st.nextToken();
    SecondToken = st.nextToken();
    }...

    dopo di che non le utilizzo piu' nel resto nella routine e jbuilder me la segnava come <not in scope>.
    In realtà credevo che le var perdessero il loro valore quando in realta il debugger del jbuilder le faceva uscire dallo scope subito dopo il blocco if...
    In effetti con una classica system.out.print sono riuscito ad accertarmi che tutto funziona come dovrebbe...


    grazie a tutti per l'interesse...
    sapere lavoro a questo mio progetto in java solo di sera dopo una lunga giornata in ufficio!

    alla prossima.

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