Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-09-2010, 13:46   #1
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
[RISOLTO] [java] Semplice programma mi da Errore NullpointerException

Buongiorno a tutti sono alle prime armi nella programmazione in java e non riesco ad uscire da questa situzione: quando vado ad eseguire questo programma mi viene restituito l'errore NullPointerException qualcuno potrebbe gentilmente aiutarmi? grazie mille


Codice:
public class MioDiz  
{
    final int MAX = 100;
    public Coppia[] v = new Coppia[MAX];
    private int taglia = 0;
    
      private int cerca(String s)
      { 
            for(int i=0; i<v.length; i++)
          {
              if (v[i].chiave.compareTo(s) == 0)
                 {  return i;}
                 }
            
            return -1;
           }    
       
       
       public void nuovo(String z) throws ErrorException
      { System.out.println(z);
          if (cerca(z) == -1)
           {v[taglia].chiave= z;
            v[taglia].attributo = 0.0;
            taglia++;
            }
         else  
           { throw new ErrorException();}

       }
       
       public void versa(String s, double d) throws ErrorException
      {
         int i = cerca(s);
          if (i != -1)
         {  v[i].attributo += d;  }
          if (i == -1)   
           { throw new ErrorException();}
       }
                
      public void preleva(String s, double d) throws ErrorException
     {
        int i = cerca(s);
        if (i == -1)
        {throw new ErrorException();}
        if (i != -1)
        {
           if ((v[i].attributo - d) < 0 )
             {throw new ErrorException();}
              else
              { v[i].attributo = v[i].attributo - d;}
         }
      }
      
      public void cancella(String s) throws ErrorException
      {
         int i = cerca(s);
         
         if (i == -1)
         { throw new ErrorException();}
         if (v[i].attributo != 0)
         {throw new ErrorException();}
         
         for (int j = i; j< taglia -1; j++)
         { v[j] = v[j +1];     }
     }  
       
        public void saldo(String s) throws ErrorException
        {   int i = cerca(s);
            if(i == -1)
           {throw new ErrorException();}
            System.out.println(v[i].toString());
        
           }
        
        public String [] stampa()
        {   String [] et = new String[MAX];
             for (int k = 0; k< taglia; k++)
             {
                et[k] = v[k].toString(); }
            return et;
         }
        }

Ultima modifica di AnthonyTex : 09-09-2010 alle 14:56.
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 14:51   #2
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Puoi postare l'errore? Cosi' vediamo a che riga si verifica..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:00   #3
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Questo è l'errore

Exception in thread "main" java.lang.NullPointerException
at MioDiz.cerca(MioDiz.java:12)
at MioDiz.nuovo(MioDiz.java:22)
at Main.main(Main.java:20)

e queste sono le altre classi esclusa ErrorException

Codice:
public class Coppia
{ public String chiave;
  public Double attributo;
  public Coppia (String c, Double a) { chiave = c; attributo = a; }
  public String toString ()
  { return chiave + ':' + attributo; }
}




Codice:
import java.util.Scanner;
import java.io.*;

public class Main
{
   public static void main(String[] arg) throws IOException
   {
     MioDiz dizio = new MioDiz();
     File archivio = new File(arg[0]);
     File aggiornamento = new File(arg[1]);
     File arcagg = new File("arcagg.txt");
     PrintWriter out = new PrintWriter(arcagg);
     Scanner leggiarch = new Scanner(archivio);
     Scanner leggiagg = new Scanner(aggiornamento);
     
while (leggiarch.hasNextLine())
{
   String [] v = leggiarch.nextLine().split(":");
   System.out.println(v[0]+" "+v[1]);
   dizio.nuovo(v[0]);
  // dizio.versa(v[0], Double.parseDouble(v[1]));
}
   leggiarch.close();
    
while (leggiagg.hasNextLine()) 
{
    String [] v = leggiagg.nextLine().split(":");

if (v[0].equals("aggiungi") == true)
{  dizio.nuovo(v[1]);}

if (v[0].equals("versa") == true)
{  dizio.versa(v[1], Double.parseDouble(v[2]));}

if (v[0].equals("preleva") == true)
{  dizio.preleva(v[1],  Double.parseDouble(v[2]));}

if (v[0].equals("cancella") == true)
{  dizio.cancella(v[1]);}

if (v[0].equals("saldo") == true)
{  dizio.saldo(v[1]);}

}
    
    leggiagg.close();
 
String [] ant = new String[100];
ant = dizio.stampa();
   
for (int w = 0; w< ant.length; w ++)
{
    out.println(ant[w]);
    }
    
    out.close();
    }
    }
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:07   #4
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
public Coppia[] v = new Coppia[MAX];

hai creato un vettore di coppia, ma le coppie non sono inizializzate, quindi i campi di questa classe:

public class Coppia
{ public String chiave;
public Double attributo;
public Coppia (String c, Double a) { chiave = c; attributo = a; }
public String toString ()
{ return chiave + ':' + attributo; }
}

non sono inizializzati.. Sempre che non ho visto male..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:10   #5
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Quote:
Originariamente inviato da Darecon Guarda i messaggi
public Coppia[] v = new Coppia[MAX];

hai creato un vettore di coppia, ma le coppie non sono inizializzate, quindi i campi di questa classe:

public class Coppia
{ public String chiave;
public Double attributo;
public Coppia (String c, Double a) { chiave = c; attributo = a; }
public String toString ()
{ return chiave + ':' + attributo; }
}

non sono inizializzati.. Sempre che non ho visto male..
Ok grazie per la risposta e come faccio a inizializzarli ad un certo valore?
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:12   #6
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Quote:
Originariamente inviato da AnthonyTex Guarda i messaggi
Ok grazie per la risposta e come faccio a inizializzarli ad un certo valore?
public class Coppia
{ public String chiave;
public Double attributo;
public Coppia () { chiave = ""; attributo = 0.0; }
public String toString ()
{ return chiave + ':' + attributo; }
}

Prova cosi'..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:17   #7
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Putroppo restituisce lo stesso errore
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:27   #8
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
if (v[i].chiave.compareTo(s) == 0)


l'errore e' qua, quindi o s e' null, o chiave ha dei campi null, o v e' null.. Puoi debuggarlo passo passo? Io in questo momento mi trovo impossibilitato..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2010, 15:33   #9
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Quote:
Originariamente inviato da Darecon Guarda i messaggi
if (v[i].chiave.compareTo(s) == 0)


l'errore e' qua, quindi o s e' null, o chiave ha dei campi null, o v e' null.. Puoi debuggarlo passo passo? Io in questo momento mi trovo impossibilitato..
s non è null gli arriva la stringa dal main(per essere sicuro ho infatti fatto System.out....) quello che non capisco è anche se voglio assegnare a v[i].chiave un certo valore mi da il solito errore per esempio v[i].chiave= "Ciao";
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2010, 08:49   #10
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Nessuno può aiutarmi?? :'(
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2010, 09:56   #11
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Quote:
Originariamente inviato da AnthonyTex Guarda i messaggi
Nessuno può aiutarmi?? :'(
Uppa tutto il pacchetto di sorgenti e i file di test grazie.. Provo a dargli un occhiata..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2010, 11:29   #12
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Non hai inizializzato gli elementi del vettore
Codice:
public Coppia[] v = new Coppia[MAX];
Ti consiglio di inserire un costruttore nella classe MioDiz in cui li inizializzi:
Codice:
...
final int MAX;
public Coppia[] v;
...
public MioDiz() {
    MAX = 100;
    v = new Coppia[MAX];
    for(int i = 0; i < MAX; i++) v[i] = new Coppia("", 0.0);
}

public MioDiz(int size) {
    MAX = size;
    v = new Coppia[MAX];
    for(int i = 0; i < MAX; i++) v[i] = new Coppia("", 0.0);
}
...
Cya
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2010, 14:55   #13
AnthonyTex
Member
 
L'Avatar di AnthonyTex
 
Iscritto dal: Apr 2010
Messaggi: 227
Grazie a tutti quanti Risolto grazie davvero
AnthonyTex è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
ThunderX3 XTC, la sedia da ufficio che s...
Mercy, Mission Impossible, Aronofsky: il...
Project Windless: il nuovo action in esc...
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v