Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di mambro
    Registrato dal
    May 2003
    Messaggi
    98

    [JAVA] Semplice if non compila senza parentesi

    Secondo voi perchè questo codice genera errore in compilazione?
    codice:
    public class Prova
    {
            public static void main(String[] args)
            {
                    if (args.length == 2)
                            int b = 3;
            }
    }
    codice:
    Prova.java:6: '.class' expected
                            int b = 3;
                                ^
    Prova.java:6: not a statement
                            int b = 3;
                            ^
    2 errors
    Mentre questo no? (ho solo aggiunto le parentesi nell'if)
    codice:
    public class Prova
    {
            public static void main(String[] args)
            {
                    if (args.length == 2)
                    {
                            int b = 3;
                    }
            }
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    l'errore di per se e' strano... comunque credo che sia per il semplice fatto che una cosa del genere sia assolutamente intutile (che senso ha dichiarare una variabile in un if se questa non puo' essere usata?) ed il compilatore se ne accorge... :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Se la dichiari prima dell'if, compila. E sei nel main (che è statico).
    Se la dichiari fuori dal main devi dichiararla static.
    Di per se, int b = 3, è una dichiarazione di variabile con assegnazione di un valore di
    partenza. Non viene considerata una istruzine dal compilatore. Diversamente, includendo
    la dichiarazione in un blocco, con le parentesi, inserisci effettivamente un'istruzione.
    Che poi all'interno del blocco non fai altro che dichiarare una variabile, non importa. Hai,
    però, soddisfatto la necessità di una 'vera' istruzione (con il blocco) da eseguire in
    seguito al test.
    Ciao, Brainjar

  4. #4
    Utente di HTML.it L'avatar di mambro
    Registrato dal
    May 2003
    Messaggi
    98
    Ok. grazie per la risposta
    Però non capisco perchè la definizione di variabile non dovrebbe essere considerata come un'istruzione dal compilatore

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