[JAVA - OOP] Ins. numeri telefonici e scatti all'interno di

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
matteo11102009
Prode Principiante
Messaggi: 57
Iscrizione: giovedì 13 gennaio 2011, 19:43

[JAVA - OOP] Ins. numeri telefonici e scatti all'interno di

Messaggio da matteo11102009 »

ciao a tutti... dovrei realizzare un programma per l'inserimento di N numeri di telefono e del numero di scatti per il numero di telefono inserito all'interno di un vettore... Successivamente visualizzare i numeri di telefono e i relativi scatti e il totale speso (il costo di ogni singolo scatto è di 0.08€)... Ho provato a realizzare il codice in java utilizzando la OOP:

Codice: Seleziona tutto

import java.util.Scanner;
public class Piano_tariffario_telefono {
    Scanner tastiera = new Scanner(System.in);
    private double num_tel[];
    private int num_scatti[];
    private double scatto;
    void gestore(){
        num_tel = new double[5];
        num_scatti = new int[5];
        scatto = 0.08;
        
    };
    public void memorizza_dati(){
        for(int i=0;i<5;i++){
        //INSERIMENTO NUMERO DI TELEFONO
        System.out.println("Inserisci il numero di telefono del "+(1+i)+"° utente: ");
        num_tel[i] = tastiera.nextDouble();
        
        //INSERIMENTO NUMERO SCATTI
        System.out.println("Inserisci numero scatti per il telefono con il seguente numero: "+num_tel[i]);
        num_scatti[i] = tastiera.nextInt();
        }
    };
    
    public void visualizza_scatti_telefoni(){
        System.out.println("");
        System.out.println("-- SCATTI TELEFONI --");
        System.out.println("NUMERO \t \t N° SCATTI \t  \t SPESA TOTALE");
        for(int i=0;i<5;i++){
            System.out.println(num_tel[i]+"\t \t"+num_scatti[i]+"\t \t"+(num_scatti[i]*scatto));
        }
    };
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Piano_tariffario_telefono gestore1;
        gestore1 = new Piano_tariffario_telefono();
        gestore1.memorizza_dati();
        gestore1.visualizza_scatti_telefoni();
    }
    
}
ma dopo la compilazione viene restituito il seguente errore:

Codice: Seleziona tutto

Exception in thread "main" java.lang.NullPointerException
	at piano_tariffario_telefono.Piano_tariffario_telefono.memorizza_dati(Piano_tariffario_telefono.java:25)
	at piano_tariffario_telefono.Piano_tariffario_telefono.main(Piano_tariffario_telefono.java:47)
Java Result: 1
Sapreste aiutarmi a risolvere il problema?
Grazie in anticipo
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA - OOP] Ins. numeri telefonici e scatti all'interno

Messaggio da Zoff »

L'errore non può dartelo durante la compilazione visto che è una eccezione, quindi lanciata a runtime.

Il problema di fondo è che non hai richiamato il metodo "gestore", il cui contenuto tra l'altro potrebbe andare benissimo nel costruttore, che non hai creato.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
matteo11102009
Prode Principiante
Messaggi: 57
Iscrizione: giovedì 13 gennaio 2011, 19:43

Re: [JAVA - OOP] Ins. numeri telefonici e scatti all'interno

Messaggio da matteo11102009 »

Grazie per la risposta... Perdona l'ignoranza, ma non ho capito bene quello che dovrei fare... So che cosa è un costruttore ma non ho capito bene che modifica apportare al programma!
Potresti aiutarmi a capire dov'è l'errore?
Grazie ancora
Avatar utente
ienaplinsky
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 954
Iscrizione: giovedì 21 gennaio 2010, 9:56
Località: Napoli

Re: [JAVA - OOP] Ins. numeri telefonici e scatti all'interno

Messaggio da ienaplinsky »

il problema è che

Codice: Seleziona tutto

private double num_tel[];
private int num_scatti[];
valgono null se non chiami il metodo

Codice: Seleziona tutto

void gestore(){
        num_tel = new double[5];
        num_scatti = new int[5];
        scatto = 0.08;
        
    };
che le inizializza, e come ti è stato suggerito questo metodo fa le veci del costruttore quindi una volta istanziata la classe con new devi per forza chiamare il metodo genera prima di eseguire una qualsiasi operazione sull' oggetto. è per questo che sarebbe più comodo sostitutiire il metodo genera con il costruttore
matteo11102009
Prode Principiante
Messaggi: 57
Iscrizione: giovedì 13 gennaio 2011, 19:43

Re: [JAVA - OOP] Ins. numeri telefonici e scatti all'interno

Messaggio da matteo11102009 »

Grazie mille ho capito e risolto :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti