• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Problema molto molto strano

LoScroccone

Utente Assiduo
Autore del topic
26 Dicembre 2010
536
0
Miglior risposta
0
Ciao ragazzi ho questo testo

Definire una classe Alunno con gli attributi protetti:
• Matricola (è un numero progressivo che permette di individuare ogni Alunno e che
viene assegnato al momento della creazione del nuovo libro.
• Nome,
• Classe,
• Sezione,
• Reddito,
• media (contiene la media dei voti dello scrutinio di fine anno)
• esito (promosso, non promosso)
• premio (contiene l’importo di un premio eventualmente assegnato)

Definire tra metodi che si ritengono necessari anche i seguenti:
costruttore di default
calcolaPremio che calcola e assegna l’ importo del premio


- di 100 euro se la media supera il 7 ed il reddito è inferiore a 20.000 euro
- di 200 euro se la media supera l’ 8 ed il reddito è inferiore a 20.000 euro
- di 300 euro se la media supera il 9 .
A partire dalla classe Alunno, definire la classe derivata AlunnoTriennio
per poter elaborare anche le informazioni relative al credito e all’indirizzo di studi scelto (es:
Informatica, Elettronica)
A tali alunni il premio viene assegnato con gli stessi criteri ma solo se il credito
• supera 4 al terzo anno,
• supera 9 al quarto anno,
• supera 13 al quinto anno.

Costruire un programma per

- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore (il
primo alunno avrà matricola=1001)
- visualizzare il nominativo dell’alunno avente la media più alta ;
- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui
nominativo inizia per G ed è composto da più di 15 caratteri.
- visualizzare gli alunni premiati ed il relativo premio
- visualizzare gli alunni del quarto anno di informatica
- contare gli alunni di elettronica che sono stati premiati
- visualizzare nominativo e media degli alunni in ordine alfabetico.

classe Alunno
public class Alunno{
protected int matricola;
protected String nome;
protected int classe;
protected String sezione;
protected int reddito;
protected double media;
protected int esito;
protected int premio;
protected static int cont=1000;

public Alunno(){
matricola=cont+1;
cont++;
}

public Alunno(String nome, int classe, String sezione, int reddito, double media, int esito){
this.nome=nome;
this.classe=classe;
this.sezione=sezione;
this.reddito=reddito;
this.media=media;
this.esito=esito;
premio=0;
matricola=cont+1;
cont++;
}

public void calcolaPremio(){
if(media>7.0 && reddito<20000) premio+=100;
if(media>8.0 && reddito<20000) premio+=200;
if(media>9.0) premio+=300;
}

public String toString(){
return ("Nome: "+nome+". Classe: "+classe+sezione+". Reddito: "+reddito+". Media: "+media+" Promosso o no(1 si, 0 no): "+esito+". Premio: "+premio+". Matricola: "+matricola+".");

}

public boolean equals(Alunno a){
return (nome.equals(a.nome) && sezione.equals(a.sezione));
}
}

classe AlunnoTriennio
public class AlunnoTriennio extends Alunno{
private int credito;
private String indirizzo;

public AlunnoTriennio(String nome, int classe, String sezione, int reddito, double media, int esito, int credito, String indirizzo){
super(nome,classe,sezione,reddito,media,esito);
this.credito=credito;
this.indirizzo=indirizzo;
}

public void calcolaPremio(){
if(credito>4 && classe==3) super.calcolaPremio();
if(credito>9 && classe==4) super.calcolaPremio();
if(credito>13 && classe==5) super.calcolaPremio();
}

public String toString(){
return (super.toString()+" Credito: "+credito+". Indirizzo: "+indirizzo+".");
}

public boolean equals(AlunnoTriennio a){
return (super.equals((Alunno)a) && indirizzo.equals(a.indirizzo));
}
}

classe Scuola

import java.io.*;

public class Scuola{
InputStreamReader tastiera=new InputStreamReader (System.in);
BufferedReader input=new BufferedReader(tastiera);

Alunno[] v;
int dim_max=0;
int nAlunni=0;
int scelta=0;
String ss=null;

public Scuola(int l){
Alunno[] v=new Alunno[l];
dim_max=l;
}

public void inserisci(){
String sa=null;
String nome=null;
String sb=null;
String sezione=null;
String sc=null;
String sd=null;
String se=null;
String sf=null;
String indirizzo=null;
int a=0;
int classe=0;
int reddito=0;
double media=0.0;
int esito=0;
int credito=0;

if(nAlunni==dim_max) System.out.println("Vettore pieno, impossibile inserire ulteriori alunni!");

else if(nAlunni!=dim_max) {
try{
System.out.println("Inserire alunno biennio o alunno triennio? Rispondere 1 se biennio, invece 0 se triennio: ");
sa=input.readLine();
a=Integer.valueOf(sa).intValue();
System.out.println("Inserire Nome: ");
nome=input.readLine();
System.out.println("Inserire classe (anno): ");
sb=input.readLine();
classe=Integer.valueOf(sb).intValue();
System.out.println("Inserire sezione: ");
sezione=input.readLine();
System.out.println("Inserire reddito: ");
sc=input.readLine();
reddito=Integer.valueOf(sc).intValue();
System.out.println("Inserire media: ");
sd=input.readLine();
media=Integer.valueOf(sd).intValue();
System.out.println("Inserire esito (1 se promosso, 0 se bocciato): ");
se=input.readLine();
esito=Integer.valueOf(se).intValue();
}catch(Exception e){
System.out.println("Errore!");
System.exit(0);
}
if(a==1){
v[nAlunni]=new Alunno(nome,classe,sezione,reddito,media,esito); // riga63
nAlunni++;
}
else if(a==0){
try{
System.out.println("Inserire credito: ");
sf=input.readLine();
credito=Integer.valueOf(sf).intValue();
System.out.println("Inserire indirizzo: ");
indirizzo=input.readLine();
}catch(Exception e){
System.out.println("Errore!");
System.exit(0);
}
v[nAlunni]=new AlunnoTriennio(nome,classe,sezione,reddito,media,esito,credito,indirizzo);
nAlunni++;
}
}
}

public void menu(){
do{
try{
System.out.println("0-Esci\n"
+ "1- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore\n"
+ "2- visualizzare il nominativo dell’alunno avente la media più alta\n"
+ "3- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui nominativo inizia per G ed è"
+ " composto da più di 15 caratteri.\n"
+ "4- visualizzare gli alunni premiati ed il relativo premio\n"
+ "5- visualizzare gli alunni del quarto anno di informatica\n"
+ "6- contare gli alunni di elettronica che sono stati premiati\n"
+ "7- visualizzare nominativo e media degli alunni in ordine alfabetico. ");
System.out.println("Inserisci scelta:");
ss=input.readLine();
scelta=Integer.valueOf(ss).intValue();
}catch(Exception e){
System.out.println("Errore");
System.exit(0);
}
if(scelta==0) System.exit(0);
if(scelta==1) inserisci(); //riga 103
}while(scelta!=0);
}
}

classe Main

import java.io.*;

public class Main{
public static void main(String[] args){


InputStreamReader tastiera=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(tastiera);
String sa=null;
int grand=0;

try{
System.out.println("Inserire grandezza scuola: ");
sa=input.readLine();
grand=Integer.valueOf(sa).intValue();
}catch(Exception e){
System.out.println("Errore");
System.exit(0);
}

Scuola vet=new Scuola(grand);
vet.menu(); //riga 22
}
}

Questo è quello che digito compreso l'errore:

Inserire grandezza scuola:
200
0-Esci
1- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore
2- visualizzare il nominativo dell’alunno avente la media più alta
3- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui nominativo inizia per G ed è composto da più di 15 caratteri.
4- visualizzare gli alunni premiati ed il relativo premio
5- visualizzare gli alunni del quarto anno di informatica
6- contare gli alunni di elettronica che sono stati premiati
7- visualizzare nominativo e media degli alunni in ordine alfabetico.
Inserisci scelta:
1
Inserire alunno biennio o alunno triennio? Rispondere 1 se biennio, invece 0 se triennio:
1
Inserire Nome:
giovine
Inserire classe (anno):
2
Inserire sezione:
c
Inserire reddito:
35000
Inserire media:
9
Inserire esito (1 se promosso, 0 se bocciato):
1
Exception in thread "main" java.lang.NullPointerException
at Scuola.inserisci(Scuola.java:63)
at Scuola.menu(Scuola.java:103)
at Main.main(Main.java:22)

Non capisco l'errore..
 
Ultima modifica:
Ciao ragazzi ho questo testo

Definire una classe Alunno con gli attributi protetti:
• Matricola (è un numero progressivo che permette di individuare ogni Alunno e che
viene assegnato al momento della creazione del nuovo libro.
• Nome,
• Classe,
• Sezione,
• Reddito,
• media (contiene la media dei voti dello scrutinio di fine anno)
• esito (promosso, non promosso)
• premio (contiene l’importo di un premio eventualmente assegnato)

Definire tra metodi che si ritengono necessari anche i seguenti:
costruttore di default
calcolaPremio che calcola e assegna l’ importo del premio


- di 100 euro se la media supera il 7 ed il reddito è inferiore a 20.000 euro
- di 200 euro se la media supera l’ 8 ed il reddito è inferiore a 20.000 euro
- di 300 euro se la media supera il 9 .
A partire dalla classe Alunno, definire la classe derivata AlunnoTriennio
per poter elaborare anche le informazioni relative al credito e all’indirizzo di studi scelto (es:
Informatica, Elettronica)
A tali alunni il premio viene assegnato con gli stessi criteri ma solo se il credito
• supera 4 al terzo anno,
• supera 9 al quarto anno,
• supera 13 al quinto anno.

Costruire un programma per

- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore (il
primo alunno avrà matricola=1001)
- visualizzare il nominativo dell’alunno avente la media più alta ;
- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui
nominativo inizia per G ed è composto da più di 15 caratteri.
- visualizzare gli alunni premiati ed il relativo premio
- visualizzare gli alunni del quarto anno di informatica
- contare gli alunni di elettronica che sono stati premiati
- visualizzare nominativo e media degli alunni in ordine alfabetico.

classe Alunno
public class Alunno{
protected int matricola;
protected String nome;
protected int classe;
protected String sezione;
protected int reddito;
protected double media;
protected int esito;
protected int premio;
protected static int cont=1000;

public Alunno(){
matricola=cont+1;
cont++;
}

public Alunno(String nome, int classe, String sezione, int reddito, double media, int esito){
this.nome=nome;
this.classe=classe;
this.sezione=sezione;
this.reddito=reddito;
this.media=media;
this.esito=esito;
premio=0;
matricola=cont+1;
cont++;
}

public void calcolaPremio(){
if(media>7.0 && reddito<20000) premio+=100;
if(media>8.0 && reddito<20000) premio+=200;
if(media>9.0) premio+=300;
}

public String toString(){
return ("Nome: "+nome+". Classe: "+classe+sezione+". Reddito: "+reddito+". Media: "+media+" Promosso o no(1 si, 0 no): "+esito+". Premio: "+premio+". Matricola: "+matricola+".");

}

public boolean equals(Alunno a){
return (nome.equals(a.nome) && sezione.equals(a.sezione));
}
}

classe AlunnoTriennio
public class AlunnoTriennio extends Alunno{
private int credito;
private String indirizzo;

public AlunnoTriennio(String nome, int classe, String sezione, int reddito, double media, int esito, int credito, String indirizzo){
super(nome,classe,sezione,reddito,media,esito);
this.credito=credito;
this.indirizzo=indirizzo;
}

public void calcolaPremio(){
if(credito>4 && classe==3) super.calcolaPremio();
if(credito>9 && classe==4) super.calcolaPremio();
if(credito>13 && classe==5) super.calcolaPremio();
}

public String toString(){
return (super.toString()+" Credito: "+credito+". Indirizzo: "+indirizzo+".");
}

public boolean equals(AlunnoTriennio a){
return (super.equals((Alunno)a) && indirizzo.equals(a.indirizzo));
}
}

classe Scuola

import java.io.*;

public class Scuola{
InputStreamReader tastiera=new InputStreamReader (System.in);
BufferedReader input=new BufferedReader(tastiera);

Alunno[] v;
int dim_max=0;
int nAlunni=0;
int scelta=0;
String ss=null;

public Scuola(int l){
Alunno[] v=new Alunno[l];
dim_max=l;
}

public void inserisci(){
String sa=null;
String nome=null;
String sb=null;
String sezione=null;
String sc=null;
String sd=null;
String se=null;
String sf=null;
String indirizzo=null;
int a=0;
int classe=0;
int reddito=0;
double media=0.0;
int esito=0;
int credito=0;

if(nAlunni==dim_max) System.out.println("Vettore pieno, impossibile inserire ulteriori alunni!");

else if(nAlunni!=dim_max) {
try{
System.out.println("Inserire alunno biennio o alunno triennio? Rispondere 1 se biennio, invece 0 se triennio: ");
sa=input.readLine();
a=Integer.valueOf(sa).intValue();
System.out.println("Inserire Nome: ");
nome=input.readLine();
System.out.println("Inserire classe (anno): ");
sb=input.readLine();
classe=Integer.valueOf(sb).intValue();
System.out.println("Inserire sezione: ");
sezione=input.readLine();
System.out.println("Inserire reddito: ");
sc=input.readLine();
reddito=Integer.valueOf(sc).intValue();
System.out.println("Inserire media: ");
sd=input.readLine();
media=Integer.valueOf(sd).intValue();
System.out.println("Inserire esito (1 se promosso, 0 se bocciato): ");
se=input.readLine();
esito=Integer.valueOf(se).intValue();
}catch(Exception e){
System.out.println("Errore!");
System.exit(0);
}
if(a==1){
v[nAlunni]=new Alunno(nome,classe,sezione,reddito,media,esito); // riga63
nAlunni++;
}
else if(a==0){
try{
System.out.println("Inserire credito: ");
sf=input.readLine();
credito=Integer.valueOf(sf).intValue();
System.out.println("Inserire indirizzo: ");
indirizzo=input.readLine();
}catch(Exception e){
System.out.println("Errore!");
System.exit(0);
}
v[nAlunni]=new AlunnoTriennio(nome,classe,sezione,reddito,media,esito,credito,indirizzo);
nAlunni++;
}
}
}

public void menu(){
do{
try{
System.out.println("0-Esci\n"
+ "1- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore\n"
+ "2- visualizzare il nominativo dell’alunno avente la media più alta\n"
+ "3- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui nominativo inizia per G ed è"
+ " composto da più di 15 caratteri.\n"
+ "4- visualizzare gli alunni premiati ed il relativo premio\n"
+ "5- visualizzare gli alunni del quarto anno di informatica\n"
+ "6- contare gli alunni di elettronica che sono stati premiati\n"
+ "7- visualizzare nominativo e media degli alunni in ordine alfabetico. ");
System.out.println("Inserisci scelta:");
ss=input.readLine();
scelta=Integer.valueOf(ss).intValue();
}catch(Exception e){
System.out.println("Errore");
System.exit(0);
}
if(scelta==0) System.exit(0);
if(scelta==1) inserisci(); //riga 103
}while(scelta!=0);
}
}

classe Main

import java.io.*;

public class Main{
public static void main(String[] args){


InputStreamReader tastiera=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(tastiera);
String sa=null;
int grand=0;

try{
System.out.println("Inserire grandezza scuola: ");
sa=input.readLine();
grand=Integer.valueOf(sa).intValue();
}catch(Exception e){
System.out.println("Errore");
System.exit(0);
}

Scuola vet=new Scuola(grand);
vet.menu(); //riga 22
}
}

Questo è quello che digito compreso l'errore:

Inserire grandezza scuola:
200
0-Esci
1- acquisire da tastiera le informazioni di n alunni frequentanti una scuola superiore
2- visualizzare il nominativo dell’alunno avente la media più alta
3- visualizzare la media degli alunni che si chiamano “Mario Rossi” e degli alunni il cui nominativo inizia per G ed è composto da più di 15 caratteri.
4- visualizzare gli alunni premiati ed il relativo premio
5- visualizzare gli alunni del quarto anno di informatica
6- contare gli alunni di elettronica che sono stati premiati
7- visualizzare nominativo e media degli alunni in ordine alfabetico.
Inserisci scelta:
1
Inserire alunno biennio o alunno triennio? Rispondere 1 se biennio, invece 0 se triennio:
1
Inserire Nome:
giovine
Inserire classe (anno):
2
Inserire sezione:
c
Inserire reddito:
35000
Inserire media:
9
Inserire esito (1 se promosso, 0 se bocciato):
1
Exception in thread "main" java.lang.NullPointerException
at Scuola.inserisci(Scuola.java:63)
at Scuola.menu(Scuola.java:103)
at Main.main(Main.java:22)

Non capisco l'errore..

il vettore alunni risulta non istanziato e fa riferimento a null ed è anche normale :emoji_relieved:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

qua crei un nuovo vettore alunno di l elementi

il codice deve essere questo

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

:soso:

Sposto in assistenza tecnica

-----

Rinomino come problema risolto ^^
 
Ultima modifica:
  • Like
Reactions: 1 person