java中数组对象的一些问题

今天敲代码,突然出现了空指针异常,说句实在话,我个人对于空指针的处理很少,今天代码报错,刚开始是自己没有把对象写到数组对象,然后还是报错,后来发现是自己写的那个循环有问题,那个循环我从1开始写,但是那个数组的下标从0开始,就这样报错了
展示如下:

import java.util.Date;

public class Book {
    private   int bookId;
    private   double  bookPrice;
    private Date    publishData;



    public Book() {
    }

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public double getBookPrice() {
        return bookPrice;
    }

    public void setBookPrice(double bookPrice) {
        this.bookPrice = bookPrice;
    }

    public Date getPublishData() {
        return publishData;
    }

    public void setPublishData(Date publishData) {
        this.publishData = publishData;
    }

}import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class BookTest {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Book [] books = new Book[6];
        for (int i=1;i<3;i++){
            Book book = new Book();
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入图书编号:");
            int  id=scanner.nextInt();
            book.setBookId(id);
            System.out.println("请输入图书的价格:");
            double  price=scanner.nextDouble();
            book.setBookPrice(price);
            System.out.println("请输入图书的出版日期(yyyy-MM-dd):");
            String next = scanner.next();
            Date date = simpleDateFormat.parse(next);
            book.setPublishData(date);
            books[i]=book;
        }
        for (Book book:books){
            System.out.println("图书的编号"+book.getBookId());
            System.out.println("图书的价格"+book.getBookPrice());

            System.out.println("图书的出版日期"+book.getPublishData());
        }

    }
}


运行结果:

请输入图书编号:
1
请输入图书的价格:
12
请输入图书的出版日期(yyyy-MM-dd)2021-12-12
请输入图书编号:
2
请输入图书的价格:
3
请输入图书的出版日期(yyyy-MM-dd)2012-12-12
Exception in thread "main" java.lang.NullPointerException
	at BookTest.main(BookTest.java:26)

Process finished with exit code 1

后来发现自己把这改成0了
还是有错
现在只展示测试类:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class BookTest {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Book [] books = new Book[6];
        for (int i=0;i<2;i++){
            Book book = new Book();
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入图书编号:");
            int  id=scanner.nextInt();
            book.setBookId(id);
            System.out.println("请输入图书的价格:");
            double  price=scanner.nextDouble();
            book.setBookPrice(price);
            System.out.println("请输入图书的出版日期(yyyy-MM-dd):");
            String next = scanner.next();
            Date date = simpleDateFormat.parse(next);
            book.setPublishData(date);
            books[i]=book;
        }
        for (Book book:books){
            System.out.println("图书的编号"+book.getBookId());
            System.out.println("图书的价格"+book.getBookPrice());

            System.out.println("图书的出版日期"+book.getPublishData());
        }

    }
}

运行结果:

请输入图书编号:
1
请输入图书的价格:
12
请输入图书的出版日期(yyyy-MM-dd)2021-12-12
请输入图书编号:
2
请输入图书的价格:
23
请输入图书的出版日期(yyyy-MM-dd)2011-12-12
图书的编号1
图书的价格12.0
图书的出版日期Sun Dec 12 00:00:00 CST 2021
图书的编号2
图书的价格23.0
图书的出版日期Mon Dec 12 00:00:00 CST 2011
Exception in thread "main" java.lang.NullPointerException
	at BookTest.main(BookTest.java:26)

Process finished with exit code 1

因为那个数组是6个元素,而我由于懒得输入,只是循环到3就不了,后面的没东西就报错了
这就是我自己解决问题的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值