Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Inizio Java...ma perchè complicarsi la vita

    salve, sto imparando il java arrivando da php,javascript,visual basic,etc.. e sto scrivendo le prime righe di codice e mi imbatto su un qualcosa ancora sconosciuto che vedo solo come un complicars la vita!

    codice:
    class Prova {
        
        int [] a;
        
        
        public static void main(String[] arg){
            
            int [] b;
            a[0]=1;
            
            System.out.println(a[0]);
        }
    }
    so che la main è la parte che viene avviata della classe, quindi credvo di creare una variabile di instanza a definita per la classe Prova e assegnargli un valore . Ho provato in 12 modi diversi e noto che una stupidità negli altri linguaggi è per java un muro invalicabile

    scherzo, ma mi manca di capire dove e perchè mi dice sempre "errore...errore" .
    quello che ho trovato assurdo nei vari tentatvi e vedere che la clausosa "this" non la digerisce dentro main (cosa normalissima in altri linguaggi nella definizione delle classi)

    chi mi aiuta a illuminarmi e magari affezionarmi a questo linguaggio?
    Luca Bottoni's World
    www.bottonisworld.com

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    mi imbatto su un qualcosa ancora sconosciuto che vedo solo come un complicars la vita!

    codice:
    class Prova {
        
        int [] a;
        
        
        public static void main(String[] arg){
            
            int [] b;
            a[0]=1;
            
            System.out.println(a[0]);
        }
    }
    Non è affatto un "complicarsi la vita" ... è che non hai (ancora) le basi sul linguaggio. La variabile 'a' è una variabile "di istanza", ovvero è associata a ciascuna istanza di Prova. Nel main sei in un metodo static e non hai alcun oggetto Prova. Anche se istanziassi un oggetto Prova, la variabile di istanza 'a' avrebbe valore null ovvero non punta ad alcun array. Gli array sono oggetti e vanno istanziati specificando la dimensione dell'array.

    Consiglio: prendi/segui un buon valido libro su Java partendo dalle basi. Il fatto che sai php/javascript/ecc... vuol dire relativamente poco.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Consiglio: prendi/segui un buon valido libro su Java partendo dalle basi. Il fatto che sai php/javascript/ecc... vuol dire relativamente poco.
    Walter Savich..900 pagine Però alcuni concetti sono spiegati a distanza di 5/7 capitoli e quindi hai domande che ti poni e che magari il libro non sà spiegare come uno comprende
    Luca Bottoni's World
    www.bottonisworld.com

  4. #4
    dimenticavo (scusa)..grazie andbin
    Luca Bottoni's World
    www.bottonisworld.com

  5. #5
    Scusa andbin,
    ma proprio mi sfugge la complessità data alla semplicità (giuro in perl,vb,vba, etc.. ma i avuto così tanti problemi a iniziare con le ovvietà )non sò java ma non mi fà partire..partito poi vado, ma se non ingrano...ti mostro questo:
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int[];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    gli errori sono...

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Syntax error on token "b", VariableDeclaratorId expected after this token
    b cannot be resolved to a type
    Illegal modifier for parameter $missing$; only final is permitted
    Variable must provide either dimension expressions or an array initializer
    b cannot be resolved to a variable
    b cannot be resolved to a variable

    at prova.ProvaParametriArray.main(ProvaParametriArray .java:10)
    e non dire..non hai capito..per ora dico che la semplicità non è sinonimo di java (con ironia e voglia di imparare lo dico)


    correzione...prova 2

    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int [1];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    ma ci mancherebbe che funzioasse

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    b cannot be resolved to a variable
    b cannot be resolved to a variable
    b cannot be resolved to a variable

    at prova.ProvaParametriArray.main(ProvaParametriArray .java:10)
    Ultima modifica di lbottoni; 03-12-2014 a 21:28
    Luca Bottoni's World
    www.bottonisworld.com

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int[];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    Qui sono sbagliate 2 cose, primo non dichiari la proprietà statica nella classe ne un array locale quindi b è indefinito, secondo non dichiari la grandezza dell'array.

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int [1];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    Qui invece dichiari la grandezza dell'array ma ti scordi sempre di dichiarare b
    codice:
    int[] b = new int[1];
    questo è corretto

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    per ora dico che la semplicità non è sinonimo di java (con ironia e voglia di imparare lo dico)

    ​Prova ad usare il c++ e vedi cosa non è sinonimo di semplicità

  7. #7
    primo non dichiari la proprietà statica nella classe
    questa non è chiara..in che senso?

    questo è corretto..è giusto ho fatica ancora io a carburare

    ultima..poi non voglio rompere...
    codice:
    class ProvaParametriArray {
        
    //come mai devo dichiarare "static" ???
        static int [] a;
        
        
        public static void main(String[] arg){
            
            a = new int[2] ;
            a[0]=1;
            
            System.out.println(a[0]);
        }
    }
    questo pezzeto di codice funziona, ma se tolgo la postilla "static" si incazza sulla variabile a. Quello che non comprendo è "main" come devo vederlo. Sul libro di savich non ho trovato ancora la definizione di "static" e come ha valore.
    Luca Bottoni's World
    www.bottonisworld.com

  8. #8
    ​Prova ad usare il c++ e vedi cosa non è sinonimo di semplicità
    dimenticavo...noooooo!!!mai compreso xchè rendere complesse le cose
    Luca Bottoni's World
    www.bottonisworld.com

  9. #9
    Io sono passato a java dal delphi, perché il delphi mi sembrava troppo complicato per le conoscenze che avevo e avevo scelto java perché è molto più semplice e non me ne pento.

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    dimenticavo...noooooo!!!mai compreso xchè rendere complesse le cose
    Più è astratto, più è potente, più è complesso (punto di vista).
    Il main ce anche in c++, ed è un metodo lanciato automaticamente dalla JVM quando avvii l'applicazione. Il main ti serve praticamente se vuoi far partire l'applicazione in java, altrimenti ti da errore e non parte. Ogni variabile chiamata da un generico metodo static deve essere statica se non è locale.
    Ultima modifica di CaMpIoN; 03-12-2014 a 22:03
    Forza Napoli!

  10. #10
    grazie CaMpIoN e RoTeam, non dico che è limpido ora...ma almeno qualche cosa è un pò più chiara


    concordo che maggiore è la complessità e maggiore è la potenza , anche se un'occhio all'immediatezza ci vuole sempre

    Oramai ero talmente abituato al "non dichiarare" che ora ho difficoltà a ritrovarmi..comunque, mi par di catturare che

    1. creo una classe "programma" che contiene il main
    2. inserisco prima di main le variabili static che sono come dire la configurazione base
    3. creo le X1,...Xn classi del mio programma
    4. nel main iniziale scrivo il colllante di tutte le mie classi

    a grosse linee....
    Luca Bottoni's World
    www.bottonisworld.com

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.