这里显示行arr[i] = "true"
中的空指针异常;
String[] count = null;
String[] arr = null;
int i = 0;
rs2 = st2.executeQuery("SELECT COUNT(*) as y FROM " + usrtbl + " WHERE user_id NOT IN (SELECT user_id FROM " + usrroletbl + ")");
rs2.next();
if (rs2.getInt("y") == 0) {
arr[i] = "false";
count = arr;
i++;
} else {
arr[i] = "true";
count = arr;
i++;
}
任何帮助将不胜感激。
答案 0 :(得分:0)
您已将arr
定义为null
并且您尚未为其分配任何内存。当然,访问arr[i]
会产生NullPointerException
。
您可以先运行SQL查询以获取结果数并分配空间,例如
arr = new String[<count>];
或者您可以使用ArrayList
来保存值。这更简单,因为它会动态增长以保存您的数据。
另外,您应该考虑将arr
(或您的ArrayList
)转换为boolean
。然后,您可以直接使用true
和false
(而不是等效的字符串)。
答案 1 :(得分:0)
您需要初始化String[] array
方法1
String[] errorSoon = new String[100]; // <--initialized statement, this is fixed size array, so you need to set the size accordingly, keeping memory usage in mind.
<强> Approach2 强>
使用列表
List<String> errorSoon = new ArrayList<String>();
同样如@dave所述,如果真的需要在这里有数组,或者只有boolean variable
可以为你工作。
答案 2 :(得分:0)
正如@Dave所说,你已经将两个String数组都声明为null,所以你当然会得到NullPointerException。您必须先知道结果集的大小,然后根据大小声明数组。
但是我会建议你使用ArrayList。它简单,可以动态添加您的结果。你可以这样做 -
List<String> list=new ArrayList<String>();
while(rs.next()){
if(// your condition){
list.add("something");
}
else{
list.add("something");
}
}
因此它会继续在列表中添加“某些东西”,直到最后一行被覆盖。 然后,您可以根据您的要求轻松遍历列表。 或者您也可以使用以下命令将ArrayList转换为数组 -
Object obj[]=list.toArray(); //Note that it will create an Array of Object datatype. You have to typecast it to your required datatype later if you want to print or manipulate the data.