Salve a tutti. Devo implementare una classe Palestra con la relativa classe collaudo dove devo inserire per forza in questa classe i dati collaudo (dati dal docente).
Il codice mi da il seguente errore:
Questa è la classe dei costruttori:codice:Exception in thread "main" java.lang.NullPointerException at Operazioni.showTab(Operazioni.java:52) at Test.main(Test.java:52)
Vi ringrazio in anticipocodice:public class Iscritti { /** * COSTRUTTORI */ public Iscritti(String cognome, String nome, String data, String tipo) { this.cognome=cognome; this.nome=nome; this.data=data; this.tipo=tipo; } public String getName() { return nome; } public String getSur() { return cognome; } public String getDate() { return data; } public String getType() { return tipo; } //campi esemplare private String nome; private String cognome; private String data; private String tipo; } Questa è la classe dei metodi: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Operazioni { Scanner in = new Scanner(System.in); //DATI INPUT public Iscritti[] datiInput() { System.out.println("QUANTI ISCRITTI VUOI INSERIRE?"); int num = in.nextInt(); Iscritti[] iscritti = new Iscritti[num]; for(int i=0;i<iscritti.length;i++) { System.out.println("Cognome iscritto "+(i+1)+": "); String cognome = in.next(); System.out.println("Nome iscritto "+(i+1)+": "); String nome = in.next(); System.out.println("Data iscrizione iscritto "+(i+1)+": "); String data = in.next(); System.out.println("tipo abbonamento iscritto "+(i+1)+": "); String tipo = in.next(); iscritti[i]= new Iscritti(cognome,nome,data,tipo); } return(iscritti); } //Visualizzazione array in forma tabellare public void showTab(Iscritti[]v) { String divider = "___________________________________________________"; String title1 = "COGNOME"; String title2 = "NOME"; String title3 = "DATA"; String title4 = "TIPO"; System.out.printf("%-15s %-15s %-15s %-15s %n", title1, title2, title3, title4); System.out.println(divider); System.out.println(""); for(int i=0;i<v.length;i++) { String name = v[i].getName(); String surname = v[i].getSur(); String date= v[i].getDate(); String type= v[i].getDate(); System.out.printf("%-15s %-15s %-15s %-15s %n", surname, name, date, type); } System.out.println(divider); System.out.println(""); } //ORDINAMENTO ARRAY IN BASE AL COGNOME //(insertion sort) public void ordSur(Iscritti[]v) { Iscritti temp; for(int i=1;i<v.length;i++) { for(int j=i;j>0;j--) { if((v[j].getSur()).compareToIgnoreCase(v[j-1].getSur())<0) { temp = v[j]; v[j]=v[j-1]; v[j-1]=temp; } } } } //TRASFORMO LA STRINGA CORRISPONDENTE ALLA DATA IN UNA DATA VERA private static Date trasf(String data) { Date data1=null; try{ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); data1 = sdf.parse(data); }catch(ParseException ex){ex.printStackTrace();} return(data1); } //ABBONAMENTO CHE SCADE PER PRIMO public void scadenza(Iscritti[] v) { //array di date Date[] array = new Date[v.length]; for(int i=0;i<array.length;i++) { array[i]=Operazioni.trasf(v[i].getDate()); } //contiene i dati del minimo Iscritti min= v[0]; Date temp= array[0]; for(int i=1;i<v.length;i++) { if((array[i]).compareTo(temp)<0) { min = v[i]; temp = array[i]; } } System.out.println(min.getSur()+", "+min.getName()+", " +min.getDate()+", "+min.getType()); } //CALCOLO PERCENTUALE DIVERSI TIPI ABBONAMENTO public void percAbb(Iscritti[]v) { int contA=0; int contB=0; int contC=0; for(int i=0;i<v.length;i++) { if((v[i].getType()).equalsIgnoreCase("A")) { contA++; } if((v[i].getType()).equalsIgnoreCase("B")) { contB++; } if((v[i].getType()).equalsIgnoreCase("C")) { contC++; } } int somma = contA+contB+contC; int percA = (100/somma)*contA; int percB = (100/somma)*contB; int percC = (100/somma)*contC; System.out.println("Percentuale abb.A: "+percA+"%"); System.out.println("Percentuale abb.B: "+percB+"%"); System.out.println("Percentuale abb.C: "+percC+"%"); } } E questa è la classe collaudo: import java.util.Scanner; public class Test { public static Iscritti[] datiCollaudo() { Iscritti[] v = new Iscritti[5]; v[0]= new Iscritti("Panucci", "Luigi", "15/10/2012", "A"); v[1]= new Iscritti("Biffi", "Andrea", "22/11/2012", "B"); v[2]= new Iscritti("Ambruoso", "Ugo", "18/12/2012", "C"); v[3]= new Iscritti("Diana", "Elena", "04/01/2013", "C"); v[4]= new Iscritti("Giacchi", "Maria", "07/01/2013", "B"); return (v); } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int scelta; Iscritti[] iscritti = null; Operazioni temp; do{ System.out.println("Scegli un'operazione: " +"\n1.Popolamento con dati da tastiera" +"\n2.Popolamento con dati di collaudo" +"\n3.Visualizzazione array in forma tabellare" +"\n4.Ordinamento dell'array per cognome" +"\n5.Abbonamento che scade per primo" +"\n6.Percentuale diversi tipi abbonamento" +"\n7.Termina programma."); scelta = in.nextInt(); switch(scelta) { case 1: temp=new Operazioni(); iscritti=temp.datiInput(); break; case 2: temp = new Operazioni(); datiCollaudo(); break; case 3: temp = new Operazioni(); temp.showTab(iscritti); break; case 4: temp = new Operazioni(); temp.ordSur(iscritti); break; case 5: temp = new Operazioni(); temp.scadenza(iscritti); break; case 6: temp = new Operazioni(); temp.percAbb(iscritti); } }while(scelta!=7); System.out.println("Programma terminato!"); } }

Rispondi quotando
Ti ricordo che:

