Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    12

    problemi dati collaudo java

    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:
    codice:
    Exception in thread "main" java.lang.NullPointerException
        at Operazioni.showTab(Operazioni.java:52)
        at Test.main(Test.java:52)
    Questa è la classe dei costruttori:

    codice:
    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!");
            
        }
    
    }
    Vi ringrazio in anticipo
    Ultima modifica di MItaly; 27-08-2014 a 00:06 Motivo: Tag CODE

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.