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

    aiuto per java.lang.NullPointerException

    ciao a tutti
    ho un metodo che un volta eseguito mi genera sempre l'eccezione
    codice:
    Exception in thread "main" java.lang.NullPointerException
    qui è l'inizio della classe che richiama il metodo
    codice:
    static int capienzaMax=10;
      Parcheggio mioParcheggio;
      public static void main(String[] argv)
    {
      
      Parcheggio mioParcheggio=new Parcheggio(capienzaMax);
    qui il punto dove lo richiama
    codice:
    case 3:{
      //int numTarga=Integer.parseInt(JOptionPane.showInputDialog("Inerisci il numero di targa: "));   
     JOptionPane.showMessageDialog(null,mioParcheggio.numAuto());
      break; 
    }
    e infine questo il metodo incriminato
    codice:
    public int numAuto(){
    
      try{
         int contaAuto=0;
        int cont=vetture.length;
        if (cont!=0){
       for(int i=0;i<cont;i++){
         if(vetture[i].getflagParcheggiata()!=0)     
      
         contaAuto=contaAuto+1;
    
     
     }
    }
     return contaAuto;
     }
     
     catch (Exception exc){
         System.out.println(exc);
          System.out.println("Non puoi");
        return -1;
       }
      }
    come posso sistemarlo?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da 19pantarei75 Visualizza il messaggio
    codice:
    static int capienzaMax=10;
      Parcheggio mioParcheggio;
      public static void main(String[] argv)
    {
      
      Parcheggio mioParcheggio=new Parcheggio(capienzaMax);
    Quel primo 'mioParcheggio' risulta essere una variabile "di istanza". Quel 'mioParcheggio' dopo che si vede dentro { del main è una variabile locale. Non stai assegnando al campo di istanza .... anche perché dovresti avere appunto una istanza della classe.
    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
    Quel primo 'mioParcheggio' risulta essere una variabile "di istanza". Quel 'mioParcheggio' dopo che si vede dentro { del main è una variabile locale. Non stai assegnando al campo di istanza .... anche perché dovresti avere appunto una istanza della classe.
    grazie per avere risposto.
    Non sto seguendo però il tuo suggerimento.

    la mia variabile d'istanza è
    codice:
     Parcheggio mioParcheggio;
    e istanzia l'oggetto cosi
    codice:
      
      Parcheggio mioParcheggio=new Parcheggio(capienzaMax);
    dove è l'errore? come posso correggerlo?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da 19pantarei75 Visualizza il messaggio
    dove è l'errore?
    Stai assegnando ad una variabile locale (locale nel main) ..... non al campo di istanza.

    Quote Originariamente inviata da 19pantarei75 Visualizza il messaggio
    come posso correggerlo?
    Dipende da cosa vuoi fare e dal resto del codice (che qui non si vede).
    La variabile sopra è di "istanza", devi avere una istanza della classe per poter assegnare un Parcheggio a quella istanza.
    Ce l'hai questa istanza? Ti serve davvero? Senza vedere il resto, non so dire altro ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    quella variabile d'istanza non mi serve effettivamente.
    il resto del codice è questo
    codice:
    import javax.swing.JOptionPane;
    import java.util.ArrayList;
    public class ParcheggioTester
    { 
     static int capienzaMax=10;
      //Parcheggio mioParcheggio;
      public static void main(String[] argv)
    {
      
      Parcheggio mioParcheggio=new Parcheggio(capienzaMax);
    
    
    String continua = "s";
    while (continua.equalsIgnoreCase("s"))
    {
     String scelta = JOptionPane.showInputDialog("1) Parcheggia Vettura \n 2)Uscita Autovettura \n 3)Numero Auto Presenti \n 4)Numero Auto Presenti in fascia oraria \n 5) Lista Auto ");
     int numScelta = Integer.parseInt(scelta);
    switch (numScelta)
    {
    case 1:
    {
    int numTarga=Integer.parseInt(JOptionPane.showInputDialog("Inerisci il numero di targa: "));
    short OraArrivo=Short.parseShort(JOptionPane.showInputDialog("Inerisci l'ora di arrivo: "));
     short OraPagate=Short.parseShort(JOptionPane.showInputDialog("Inerisci le ore pagate: "));
      
    if(mioParcheggio.entraVettura(numTarga,OraArrivo,OraPagate))
    JOptionPane.showMessageDialog(null, "Auto Parcheggiata");
    
    else
    JOptionPane.showMessageDialog(null, "Auto Non Parcheggiata");
    break;
    }
       case 3:{
      //int numTarga=Integer.parseInt(JOptionPane.showInputDialog("Inerisci il numero di targa: "));   
     JOptionPane.showMessageDialog(null,mioParcheggio.numAuto());
      break; 
    }
    
    
    
    
    
       case 5:{
     JOptionPane.showMessageDialog(null,mioParcheggio.listaAuto());
      break; 
    }
    }
    continua = JOptionPane.showInputDialog("Vuoi effettuare nuove operazioni? (s/n)");
    }
    }
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    28
    Se l'eccezione è lanciata nel "case 3" può essere il length che fai sul vettore "vetture" in numAuto(). Quel vettore è istanziato?

  7. #7
    Quote Originariamente inviata da javatore Visualizza il messaggio
    Se l'eccezione è lanciata nel "case 3" può essere il length che fai sul vettore "vetture" in numAuto(). Quel vettore è istanziato?
    è istanziato nella classe Parcheggio
    codice:
     import java.util.ArrayList;
    
    
    public class Parcheggio {
    int numVetture;
        short oraCorrente,oraScadenza;
        Vettura[]vetture;
        ArrayList<Vettura>rimozione;
    
    
      
      public Parcheggio(int maxVetture) {
        
        numVetture=0;
        oraCorrente=0;
        vetture= new Vettura[maxVetture];
    rimozione=new ArrayList<Vettura>();
    
    }
    
    ..
    ...
    ...
     public int numAuto(){
    
      try{
         int contaAuto=0;
        int cont=vetture.length;
        if (cont!=0){
       for(int i=0;i<cont;i++){
         if(vetture[i].getflagParcheggiata()!=0)     
      
         contaAuto=contaAuto+1;
    
     
     }
    }
     return contaAuto;
     }
     
     catch (Exception exc){
         System.out.println(exc);
          System.out.println("Non puoi");
        return -1;
       }
      }
    ...
    ....
    ...
    }

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.