Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-07-2005, 21:11   #1
GiulioCesare
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 364
Java strana eccezione

Salve ragazzi ho un problema con un piccolo programma, che eredita una classe e deve memorizzare delle informazioni tramite input, ma vengono segnalati degli errori in esecuzione, appena dopo inserisco il primo nome, l'errore è questo

Exception in thread "main" java.lang.NullPointerException
at studenti.<init>(studenti.java:24)
at studenti.main(studenti.java:42)

E questo è il codice, grazie a chi vorrà aiutarmi

Codice:
import javax.swing.*;
import java.util.*;

class dati
{
	public String nome="";
	public String cognome="";
	public int eta=0;
}

public class studenti extends dati
{
	public studenti [] n = new studenti [5];

	studenti()
	{
		for(int i=0; i<=4; i++)
		{
			String t = JOptionPane.showInputDialog("Inserire nome");
			n[i].nome = t;
			String z = JOptionPane.showInputDialog("Inserire cognome");
			n[i].cognome = z;
			String y = JOptionPane.showInputDialog("Inserire età");
			n[i].eta = Integer.parseInt(y);
		}
	}

	public void mostra()
	{
		for(int i=0; i<=4; i++)
		{
			System.out.println (n[i].nome);
			System.out.println (n[i].cognome);
			System.out.println (n[i].eta);

		}
	}

	public static void main(String [] args)
	{

		studenti a = new studenti();
		a.mostra();
		System.exit(0);

	}

}
GiulioCesare è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 01:07   #2
youthgonewild
Senior Member
 
L'Avatar di youthgonewild
 
Iscritto dal: Aug 2001
Città: Torino
Messaggi: 1282
Non va bene la creazione dell'array perchè non punta a nessun oggetto..la prima cosa che mi viene in mente è questa:

import javax.swing.*;
import java.util.*;

class dati
{
public String nome;
public String cognome;
public int eta;

public dati() //un costruttore per la classi dati
{
nome = "";
cognome = "";
eta = 0;
}
}

public class studenti extends dati
{
private dati [] n = new dati[5];

public studenti()
{
for(int i=0; i<=4; i++)
{
n[i] = new dati(); //dopo aver creato l'array devi inizializzare ciascuna sua "cella"

etc..il resto del codice può andare bene
youthgonewild è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 09:40   #3
GiulioCesare
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 364
Se faccio come dici tu, quando compilo, viene segnalato un errore di Exception in thread "main" java.lang.StackOverflowError

GiulioCesare è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 10:01   #4
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
i < 4, non minore o uguale, altrimenti sballi con l'array.
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 10:13   #5
GiulioCesare
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 364
Non penso proprio che mettere i<=4 sia un errore, l'array è di 5 elementi e da zero a 4 , sono 5 elementi
GiulioCesare è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 10:30   #6
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Ma perchè utilizzi un costrutto di estensione? Non mi pare azzeccato per il modello che vuoi realizzare, io ci vedrei più un'aggregazione:

public class studenti dati
{
public dati[] n = new dati[5];

etc.. etc..


P.S. ovviamnte è solo una mia opinione.

Ultima modifica di Alvaro Vitali : 18-07-2005 alle 10:32.
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 10:47   #7
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Il problema è che quando definisci l'array questo conterrà riferimenti "null" e non gli oggetti costruiti col costruttore di default, perciò non puoi accedere a riferimento.nome, perchè riferimento è null!

Questa mia versione funziona, vedi se ti piace:

Codice:
class Dati
{
    public String nome="";
    public String cognome="";
    public int eta=0;
    
    
    public Dati(String n, String c, int e) {
        
        nome=n;
        cognome=c;
        eta=e;
    }
    

}

Codice:
import javax.swing.JOptionPane;

public class Studenti 
{
    public Dati[] n = new Dati[5];

    Studenti()
    {
        for(int i=0; i<=4; i++)
        {
            
            String t = JOptionPane.showInputDialog("Inserire nome");
            String nome = t;
            String z = JOptionPane.showInputDialog("Inserire cognome");
            String cognome = z;
            String y = JOptionPane.showInputDialog("Inserire età");
            int eta = Integer.parseInt(y);
            n[i] = new Dati(nome, cognome, eta);
            
            
        }
    }

    public void mostra()
    {
        for(int i=0; i<=4; i++)
        {
            System.out.println (n[i].nome);
            System.out.println (n[i].cognome);
            System.out.println (n[i].eta);

        }
    }

    public static void main(String [] args)
    {

        Studenti a = new Studenti();
        a.mostra();
        System.exit(0);

    }

}
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2005, 14:57   #8
GiulioCesare
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 364
Ti ringrazio molto, ora così funziona, ma un dubbio mi rimane perchè quando inizializzavo ogni singolo oggetto con un :
for(int i=0; i<=4; i++) studenti [] n = new studenti();
mi dava un errore di stackoverflow?
GiulioCesare è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
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: 03:29.


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