- 26 Dicembre 2010
- 536
- 0
- Miglior risposta
- 0
Ciao ragazzi ho questo testo
classe Alunno
classe AlunnoTriennio
classe Scuola
classe Main
Questo è quello che digito compreso l'errore:
Non capisco l'errore..
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.
• 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));
}
}
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));
}
}
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);
}
}
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
}
}
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)
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: