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
- 值是静态的
- 值是公开的
- 我用过
for
- 我检查了 get_Val() 中的值。
- 我检查了 classcification() 中的值。
但是
for
这不是工作。 - 我使用了 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/