Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107

    [ JAVA ] Integer number too large

    Salve... ho un thread e per un lavoro particolare voglio esso venga eseguito una volta, dopo di che, tramite il metodo
    sleep( long millis )
    esso "dorma" per un mese e poi esegua di nuovo l'operazione che deve eseguire; affinchè possa fare ciò ho fatto una cosa del tipo:

    public class ConvertXml extends Thread {
    //private long dormi = ( 60000*60*24 )*30;
    private long dormi = 2592000000;
    public ConvertXml( ) {
    System.out.println( dormi );
    }
    public void run(){
    while( true ){
    Convert c = new Convert();
    c.creaXml();
    try{
    this.sleep( dormi );
    }catch( InterruptedException ie ){
    System.err.println( "Interrotto "+ ie.getMessage() );
    }

    }
    }
    }


    Dove 2592000000 è il risultato di ( 60000*60*24 )*30 e cioè il tempo in millisecondi durante cui il thread deve dormire; il problema è che ho un errore del tipo:
    Integer number too large ;
    però, avendo dichiarato dormi di tipo long, non dovrebbe riuscire a contenere questo valore?Infatti il long in Java è di 64 bit dunque dovrebbe riuscire a contenere da -9223372036854775808 a +9223372036854775807 o sbaglio?
    Qualcuno sa dirmi perchè succede ciò? Grazie a tutti e ciao

    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi mettere la L dopo il numero, altrimenti il compilatore interpreta il tuonumero come una costante intera da convertire (in casting) in long:


    private long dormi = 2592000000L; // nota la L dopo il numero


    Almento così è scritto nella documentazione Java...


    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

  3. #3
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Wow hai ragionissima.....che imbecille... me ne ero proprio dimenticato.... grazie ( P.S.: va bene anche la l minuscola );
    thanks very much
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per la l minuscola, pensavo anch'io che si potesse fare, ma per evitare di scrivere qualche cavolata ho riportato esattamente un esempio della Sun!




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