|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
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?
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Puoi postare l'errore? Cosi' vediamo a che riga si verifica..
|
|
|
|
|
|
#3 |
|
Member
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();
}
}
|
|
|
|
|
|
#4 |
|
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.. |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Apr 2010
Messaggi: 227
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Quote:
{ public String chiave; public Double attributo; public Coppia () { chiave = ""; attributo = 0.0; } public String toString () { return chiave + ':' + attributo; } } Prova cosi'.. |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 227
|
Putroppo restituisce lo stesso errore
|
|
|
|
|
|
#8 |
|
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.. |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 227
|
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";
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 227
|
Nessuno può aiutarmi?? :'(
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Non hai inizializzato gli elementi del vettore
Codice:
public Coppia[] v = new Coppia[MAX]; 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);
}
...
__________________
iMac 27" 5K |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 227
|
Grazie a tutti quanti Risolto grazie davvero
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:48.




















