java - 在java中使用ArrayList.get()出现NullPointerException

标签 java arraylist nullpointerexception

import java.io.FileInputStream;
import java.util.ArrayList;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class choice_checkOut {

    public static String ID;
    public static String studenName;
    public static String PH;
    public static String bookName;
    public static String returnVal;

    public static ArrayList<String> DB_ID;
    public static ArrayList<String> DB_studentName;
    public static ArrayList<String> DB_PH;
    public static ArrayList<String> DB_bookName;
    public static ArrayList<String> DB_returnVal;

    String value;

    public void get_Val()
    {
        // TODO Auto-generated constructor stub
        try 
        {
            value= "";
            String a = "C:/Users/ehdtj/OneDrive/바탕 화면/Web/bookControl/UI/info.xlsx";
            FileInputStream file = new FileInputStream(a);
            @SuppressWarnings("resource")
            XSSFWorkbook workbook = new XSSFWorkbook(file);
            XSSFSheet sheet = workbook.getSheetAt(0); 
            for(int rowIndex=1; rowIndex<=50; rowIndex++)
            {
                XSSFRow row = sheet.getRow(rowIndex);
                if(row != null)
                {
                    for(int columnINdex = 0; columnINdex <=5; columnINdex++) 
                    {
                        XSSFCell cell = row.getCell(columnINdex);

                        if (cell == null)
                        {
                            continue;
                        }

                        else
                        {
                            switch(cell.getCellType())
                            {
                            case NUMERIC://XSSFCell.CELL_TYPE_NUMERIC:
                                value = cell.getStringCellValue()+"";
                                break;
                            case STRING://XSSFCell.CELL_TYPE_STRING:
                                value = cell.getStringCellValue()+"";
                                break;
                            case BLANK://XSSFCell.CELL_TYPE_BLANK:
                                value = "nell";
                                break;
                            default:
                                break;
                            }

                            switch(columnINdex)
                            {
                            case 0:
                                ID = value;
                                break;
                            case 1:
                                studenName = value;
                                break;
                            case 2:
                                PH= value;
                                break;
                            case 3:
                                bookName = value;
                                break;
                            case 4:
                                returnVal = value;
                                break;
                            default:
                                break;
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

    public void classcification()
    {       
        get_Val();
        for(int i=0; i<=50; i++)
        {
            switch(i)
            {
            case 0:
                DB_ID.add(ID);
                break;
            case 1:
                DB_studentName.add(studenName);
                break;
            case 2:
                DB_PH.add(PH);
                break;
            case 3:
                DB_bookName.add(bookName);
                break;
            case 4:
                DB_returnVal.add(returnVal);
                break;
            default:
                break;
            }
        }
    }

    public ArrayList<String> RE_ID()
    {
        classcification();
        return DB_ID;
    }

    public  ArrayList<String> RE_bookName ()
    {
        return DB_bookName;
    }

    public static void main(String[] arg)
    {
        choice_checkOut test = new choice_checkOut();

            ArrayList<String> a = new ArrayList<String>();
            a = test.RE_ID();
            String b = a.get(0);
            System.out.println(b);
    }
} //class

Exception in thread "main" java.lang.NullPointerException

  1. 值是静态的
  2. 值是公开的
  3. 我用过for
  4. 我检查了 get_Val() 中的值。
  5. 我检查了 classcification() 中的值。 但是for这不是工作。
  6. 我使用了 this.value。 但 this.value 不起作用。

我尝试......

        //ArrayList<String> a = test.RE_ID();

        //System.out.println(a);
        //System.out.println(a.size());
        /*
        for(int i=0; i<= a.size(); i++)
        {
            String b= a.get(i);
            System.out.println(b);
        }
        */
        //System.out.println(DB_ID);
        //System.out.println(test.DB_bookName);
        /*
        int index= 0;
        try {
            String a = test.print_ID(index);
            String b = test.print_bookName(index);
            System.out.println(a+b);
        } catch (Exception e) {
            // TODO: handle exception
            String b = test.print_bookName(index);
            System.out.println(b);
        }
        */

终于

I used arraylist.get() n String b initiated.

为什么 arrayList b 为空?

最佳答案

首先,你的代码一团糟。不要使用一种庞大的方法,而是将代码划分为不同的方法。它更容易阅读,更容易检测错误并且看起来更专业。

其次,您在任何时候都不会初始化任何 ArrayLists ,一个ArrayList不能只是声明然后立即准备好添加值,您必须首先初始化它:ArrayList<String> arrayList = new ArrayList<>();

这适用于 Java 中的每个对象,你不能只声明一个对象并立即开始调用它的方法,你必须首先调用它的构造函数(或者,返回相同类型的对象的方法)。

关于java - 在java中使用ArrayList.get()出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60682207/

相关文章:

java - TableRow 宽度不一致 - Android

java - Java 类 ArrayList 如何返回 Iterator 对象?

java - 循环遍历不同的数组列表

java - 零和等于的对称性

android - onActivityCreated 中通用图像加载器 fragment 中进度条的 NullPointerException

nullpointerexception - 使用 eclipse 运行 TestNg 测试组时出现 NPE 错误

Java正则表达式用空格替换两侧带有空格的单个字母

java - 使用 AbstractTableModel 将行添加到 JTable

java - x > -1 vs x >= 0,是否存在性能差异

java - 将 <LatLng,String> 的数组列表从主 Activity 传递到另一个类