螺纹“中的异常;主&x201D;java.lang.NullPointerException
执行代码并引入第一个cota螺纹“中的异常;主&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
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());
您已经初始化了数组,但没有初始化数组的元素。在这里发布有关您收到的运行时错误的信息之前,最好搜索有关错误含义的信息。这将节省您的时间,因为像这样的问题已经被一遍又一遍地问了。。。。