Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente bannato
    Registrato dal
    Dec 2000
    Messaggi
    147

    [JAVA]problemi di inizializzazione

    ho un metodo main
    dichiaro 2 variabili di tipo Time(per esempio)
    Time t1 = new Time(ore, minuti);
    Time t2;
    questa variabile t2 la inizializzo in un IF con la variabile Time t1;

    ora se voglio utilizzare un metodo print della classe Time che ho creato utilizzando t2, se lo utilizzo all'interno dell'IF mi funziona altrimenti mi dice:

    "Test.java": Error #: 553 : variable prima might not have been initialized at line 30, column 9

    perchè??

  2. #2
    perchè come dici tu la variabile t2 viene inizializzata se e solo se il predicato dell'if è true; se per caso if(.) fosse false, t2 non sarebbe inizializzata e se ti fosse consentito utilizzarla in altre parti di programma, avresti un errore a run-time.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,130
    Si può ovviare a questo problema inizializzandole prima entrambe a null.

    Ovviamente, quando devi utilizzarle, se non sei certo della loro inizializzazione (lo fai all'interno di un if, quindi non ne sei certo), devi prima controllare che non siano null
    codice:
    Timer t1 = null;
    Timer t2 = null;
    
    ...
    
    if ( <condizione>) {
       t1 = new Timer(...);
       t2 = new Timer(...);
    }
    
    ...
    
    public void print() {
       if (t1 != null) {
          t1.start();  // Lo uso solo se non è null
       }
       ...
       if (t2 != null) {
          t2.start();  // Lo uso solo se non è null
       }
    }
    Così il compilatore non ti dovrebbe dare problemi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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