我尝试代码时遇到此错误:线程“ main”中的异常java.lang.NullPointerException。有人能帮我吗?

时间:2019-02-11 06:22:43

标签: java

e.getLibriByAutore是问题所在,该程序在搜索作者姓名(getLibryByAutore = getBooksByAuthor)时会打印该作者的书

import java.util.*;
import java.io.*;

public class Libreria {

public static void main(String[]arg){
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String nome="", cognome="", periodo="", titolo="", nomenew="", cognomenew="", editore="";
    int annoLibro=0, giorno, mese, anno;
    Calendar data=Calendar.getInstance();
    Autore a= new Autore(nome, cognome, periodo, data);
    Libro l = new Libro(titolo, a, annoLibro);
    Editore e= new Editore();
    Libro[] libri= new Libro[10];

    System.out.print("Inserisci il nome dell' editore: ");
        try{
            editore=br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        e.setNome(editore);

    for(int j=0; j<3; j++){
        System.out.print("Inserisci il titolo del libro: ");
        try{
            titolo= br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        libri[j]=new Libro(titolo, a, annoLibro);
        libri[j].setTitolo(titolo);
        l.setTitolo(titolo);

        System.out.print("Inserisci l' anno del libro: ");
        try{
            annoLibro= Integer.valueOf(br.readLine());
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        libri[j].setAnno(annoLibro);
        l.setAnno(annoLibro);

        System.out.print("Inserisci il nome dell' autore: ");
        try{
            nome= br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        a.setNome(nome);

        System.out.print("Inserisci il cognome dell' autore: ");
        try{
            cognome= br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        a.setCognome(cognome);
        System.out.print("Inserisci il periodo dell' autore: ");
        try{
            periodo= br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
        a.setPeriodo(periodo);
        try{
            System.out.print("Inserisci il giorno di nascita dell' autore: ");
            giorno= Integer.valueOf(br.readLine());
            System.out.print("Inserisci il mese di nascita dell' autore: ");
            mese= Integer.valueOf(br.readLine());
            System.out.print("Inserisci l' anno di nascita dell' autore: ");
            anno= Integer.valueOf(br.readLine());
            data.set(anno, mese, giorno);
            a.setData(data);
        }catch(Exception ex){
            System.err.println("ERRORE");
        }

        System.out.println("AUTORE SUCCESSIVO");
    }
    e.setLibri(libri);
    System.out.println("Di quale autore vuoi stampare i libri? (nome,cognome)");
    try{
        nomenew=br.readLine();
        cognomenew=br.readLine();
        }catch(Exception ex){
            System.err.println("ERRORE");
        }
    a.setNome(nomenew);
    a.setCognome(cognomenew);
    String arr[]=new String[10];

    for(int j=0; j<libri.length; j++){
        arr[j]=Arrays.toString(e.getLibriByAutore(nomenew , cognomenew));
    }

    for(int j=0; j<libri.length; j++){
        System.out.println(arr[j]);
    }
}

必选类(这是具有getLibriByAutore方法的Editore类)

class Editore {
private String nome;
private Libro[] libri;
int k=0;

public Editore(){} 

public Editore(String nome, Libro[] libri){

    this.nome=nome;
    this.libri=libri;
}

public String getNome(){
    return this.nome;
}

public Libro[] getLibri(){
    return this.libri;
}

public void setNome(String n){
    this.nome=n;
}

public void setLibri(Libro[] l){
    this.libri=l;
}

public Libro[] getLibriByAutore(String n, String c){
    Libro[] ris = new Libro[libri.length];
    for(int i=0; i<libri.length; i++){
        if(libri[i].getAutore().getNome().equals(n)&&libri[i].getAutore().getCognome().equals(c)){
            ris[k]=libri[i];
            k++;
            }
        }
    return ris;
    }
}

0 个答案:

没有答案