螺纹“中的异常;主&x201D;java.lang.NullPointerException

螺纹“中的异常;主&x201D;java.lang.NullPointerException,java,Java,执行代码并引入第一个cotal[I]后,以下问题出现在我的控制台中。cota=sc.nextLine() 线程“main”java.lang.NullPointerException中出现异常 在exercio6.introlivros(exercio6.java:18) 在exercio6.main(exercio6.java:9) 谁能告诉我有什么问题吗 这是我的密码 public class exercicio6 { public static Scanner sc = new S

执行代码并引入第一个cota
l[I]后,以下问题出现在我的控制台中。cota=sc.nextLine()

线程“main”java.lang.NullPointerException中出现异常
在exercio6.introlivros(exercio6.java:18)
在exercio6.main(exercio6.java:9)

谁能告诉我有什么问题吗

这是我的密码

public class exercicio6 {
    public static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        livro l[] = new livro[200];
        l = introlivros();
        apagarbase(l);

    }

    public static livro[] introlivros() {
        int i = 0;
        livro l[] = new livro[200];
        do {
            System.out.print("Introduza a cota:");
            l[i].cota = sc.nextLine();
            if (l[i].cota.length() == 0)
                break;
            do {
                System.out.print("Introduza o autor:");
                l[i].autor = sc.nextLine();
            } while (l[i].autor.length() < 40);
            System.out.print("Introduza o titulo:");
            l[i].titulo = sc.nextLine();
            System.out.println("Introduza a data:");
            System.out.println("Dia:");
            l[i].data[0] = sc.nextInt();
            System.out.println("Mes:");
            l[i].data[1] = sc.nextInt();
            System.out.println("Ano:");
            l[i].data[2] = sc.nextInt();
            i++;
        } while (i < 200);
        return l;
    }

    public static void remover(livro l[]) {
        String cota1 = new String();
        boolean verificar = false;

        do {
            cota1 = sc.nextLine();
            if (cota1.length() != 0) {
                for (int i = 0; i < 200; i++) {
                    if (cota1 == l[i].cota) {
                        l[i].cota = "";
                        break;
                    }
                    if (cota1 != l[i].cota) {
                        verificar = true;
                    }
                }
            }
            if (cota1.length() == 0) {
                System.out.println("Introduza a cota de novo!");
            }
            if (verificar == true) {
                System.out.println("Esse livro não eciste!");
            }

        } while (cota1.length() == 0);

    }

    public static void apagarbase(livro l[]) {
        livro p[] = new livro[200];
        for (int i = 0; i < 200; i++) {
            l[i].cota = null;
            l[i].autor = null;
            l[i].titulo = null;
            l[i].data[0] = 0;
            /*
             * l[i].data[1]=null; l[i].data[2]=null; l[i].estado[0]=null;
             */
        }
    }

}

class livro {
    String cota = new String();
    String autor = new String();
    String titulo = new String();
    int data[] = new int[3];
    char estado[] = new char[1]; // Requisitado R, Livre L, Condicionado C;
}
公共类练习6{
公共静态扫描仪sc=新扫描仪(System.in);
公共静态void main(字符串[]args){
livro l[]=新的livro[200];
l=内向型();
阿帕加贝斯(l);
}
公共静态livro[]导入livros(){
int i=0;
livro l[]=新的livro[200];
做{
系统输出打印(“简介a cota:”);
l[i].cota=sc.nextLine();
if(l[i].cota.length()==0)
打破
做{
系统输出打印(“自动导入”);
l[i].autor=sc.nextLine();
}而(l[i].autor.length()<40);
系统输出打印(“introzao titulo:”);
l[i].titulo=sc.nextLine();
System.out.println(“导入a数据:”);
系统输出打印项次(“直径:”);
l[i]。数据[0]=sc.nextInt();
System.out.println(“Mes:”);
l[i].数据[1]=sc.nextInt();
System.out.println(“Ano:”);
l[i].数据[2]=sc.nextInt();
i++;
}而(i<200);
返回l;
}
公共静态空隙清除器(livro l[]{
字符串cota1=新字符串();
布尔值=false;
做{
cota1=sc.nextLine();
如果(cota1.length()!=0){
对于(int i=0;i<200;i++){
如果(cota1==l[i].cota){
l[i].cota=“”;
打破
}
if(cota1!=l[i].cota){
验证车=真;
}
}
}
if(cota1.length()=0){
System.out.println(“新一代cota简介!”);
}
如果(验证车==真){
System.out.println(“Esse livro não eciste!”);
}
}而(cota1.length()=0);
}
公共静态void apagarbase(livro l[]{
livro p[]=新的livro[200];
对于(int i=0;i<200;i++){
l[i].cota=null;
l[i].autor=null;
l[i].titulo=null;
l[i]。数据[0]=0;
/*
*l[i]。数据[1]=null;l[i]。数据[2]=null;l[i]。estado[0]=null;
*/
}
}
}
利夫罗级{
字符串cota=新字符串();
String autor=新字符串();
String titulo=新字符串();
整数数据[]=新整数[3];
char estado[]=新字符[1];//requisidado R,Livre L,condicinodo C;
}

这里您正在实例化阵列:

livro l[] = new livro[200];
但是,此处您正试图访问一个元素,该元素包含一个尚不存在的对象:

l[i].cota = sc.nextLine();

您需要在每个元素上循环并实例化一个新对象。使用for循环或Array.fill。

如上所述-对象初始化为null

填充数组的一种快速方法是-

livro l[] = new livro[200];
Arrays.fill(l, new livro());

您已经初始化了数组,但没有初始化数组的元素。在这里发布有关您收到的运行时错误的信息之前,最好搜索有关错误含义的信息。这将节省您的时间,因为像这样的问题已经被一遍又一遍地问了。。。。