Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA] Eccezione che blocca l'esecuzione

    Buongiorno, ho provato a compilare il main di un programma da me fatto, il quale main chiede di inserire il numero di giocatori. La compilazione avviene tranquillamente, ma quando vado a eseguire il programma si blocca...
    Premetto che fissando un numero di giocatori senza chiederlo da tastiera tutto funge bene..
    Ecco il codice e il problema che mi da netbeans:
    Codice:

    codice:
    import java.io.*; 
    public class Serverl 
    {  
        
       public static void main(String args[]){ 
            
          int NUM_Giocatori=3 ; 
          final int NUM_Carte_per_Colore = 13; 
          final int NUM_Colori = 4; 
          
          
          Mazzo mazzo = new Mazzo(NUM_Carte_per_Colore,NUM_Colori); 
          mazzo.mescolaMazzo(); 
          System.out.println("Inserire il numero di giocatori[2/3]:\n"); 
    /****acquisizione del numero di giocatori da tastiera***************/
    try { 
       BufferedReader br = new BufferedReader( new InputStreamReader(System.in) ); 
       String s = br.readLine(); 
       NUM_Giocatori = Integer.parseInt(s); 
    } 
    catch (Exception e) 
    { e.printStackTrace();} 
    /******fine dell' acquisizione******/
          if((NUM_Carte_per_Colore*NUM_Colori>(NUM_Carte_per_Colore*NUM_Giocatori)+NUM_Giocatori)&&NUM_Giocatori!=0) /*condizione necessaria per il gioco,potete anche non guardarla!*/
    { 
       System.out.println("Il numero di giocatori è: " + NUM_Giocatori+ "\n"); 
        
       Giocatore[] arrayGiocatori = new Giocatore[NUM_Giocatori]; 
        
       for (int id = 0; id < NUM_Giocatori; id++) 
          {  arrayGiocatori[id].start(); 
          } 
    } 
        
    else { 
        System.out.println("Il numero di giocatori non è valido, grazie per aver giocato!\n"); 
        System.exit(0); 
    } 
    } 
    }


    Nell'esecuzione il programma si ferma quasi subito dicendo:

    java.lang.NullPointerException
    at Serverl.main(Serverl.java:39)
    Exception in thread "main"

    CHE ECCEZIONE E'?????????????????? :master:
    Qualche suggerimento?
    Grazie anticipatamente.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Anzitutto io invertirei la condizione nel if: sposterei il controllo sulla variabile NUM_Giocatori, all'inizio, in modo tale che, se risulta falsa, il seguente controllo non viene fatto e l'istruzione if termina immediatamente.

    L'eccezione viene sollevata perchè crei un array di oggetti Giocatore, ma non crei nessun oggetto Giocatore: lasci l'array vuoto e tenti di avviare ciascuno dei suoi componenti!

    codice:
    for (int id=0; id<NUM_Giocatori; id++) {
       arrayGiocatori[id] = new Giocatore(...);
       arrayGiocatori[id].start();
    }
    Ad occhio il resto codice sembra corretto...

    PS: Quando richiami System.out.println() è inutile inserire un ritorno a capo nella stringa da inserire... quell' ln indica, infatti, che il ritorno a capo avviene automaticamente!


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