Java 使用拆分运算符和逗号运算符时出现Nullpointer异常错误
我想将值HTRANS和HBURST存储在一个列表中,将2'b00和3'b000存储在另一个列表中。但是我在我写的代码中得到了一个空指针异常,我已经为它写了一个SSCCE,请帮助Java 使用拆分运算符和逗号运算符时出现Nullpointer异常错误,java,arrays,string,nullpointerexception,split,Java,Arrays,String,Nullpointerexception,Split,我想将值HTRANS和HBURST存储在一个列表中,将2'b00和3'b000存储在另一个列表中。但是我在我写的代码中得到了一个空指针异常,我已经为它写了一个SSCCE,请帮助 import java.util.ArrayList; import java.util.List; public class SSCCE1 { public static void main(String[] args) { List<String> bins = new Arra
import java.util.ArrayList;
import java.util.List;
public class SSCCE1 {
public static void main(String[] args) {
List<String> bins = new ArrayList<String>();
bins.add("HTRANS = 2'b00 to 2'b11");
bins.add("HTRANS = 2'b00 to 2'b11, HBURST = 3'b000 to 3'b111");
String[] bins_splitcomma = null;
String temp;
for(int i =0; i < bins.size(); i++) {
temp = bins.get(i);
if(temp.contains(",")) { // if element of bins contains comma, case 2.
bins_splitcomma = temp.split(",");
}
else {
bins_splitcomma[0] = temp; // if element of bins does not contain a comma, case 1.
}
}
}
}
我的完整代码:
String temp1;
String[] bins_splitcomma = null;
String[] bins_split;
List<String> bins_name = new ArrayList<String>();
List<String> bins_bitrange = new ArrayList<String>();
//List<String> bins_bits = new ArrayList<String>();
ArrayList<ArrayList<String>> bins_bits = new ArrayList<ArrayList<String>>();
List<String> bins = dataStr.get("bins");
System.out.println(bins);
for(int i =0; i < bins.size(); i++) {
temp1 = bins.get(i);
if(temp1.contains(",")) {
bins_splitcomma = temp1.split(",");
}
else {
bins_splitcomma = new String[]{temp1};
}
for(int j = 0; j < bins_splitcomma.length; j++) {
bins_split = bins_splitcomma[j].split("="); // HBURST = 3'b000 to 3'b111
if(!(bins_name.contains(bins_split[0].trim()))) {
bins_name.add(bins_split[0].trim()); // HBURST
bins_bitrange.add(bins_split[1].trim()); // 3'b000 to 3'b111
ArrayList<String> tempo = returnBits(bins_split[1].trim()); // [3'b000, 3'b001, 3'b010, 3'b011, ... , 3'b111]
bins_bits.add(tempo);
}
}
}
String temp1;
字符串[]bin\u splitcomma=null;
String[]bin\u split;
List bin_name=new ArrayList();
List bin_bitrange=new ArrayList();
//List bins_bits=new ArrayList();
ArrayList bin_bits=新的ArrayList();
List bin=dataStr.get(“bin”);
系统输出打印LN(箱子);
对于(int i=0;i
在else
路径中,您需要创建数组,而不是尝试访问空数组引用的元素0
bins_splitcomma = new String[]{temp};
这是我的完整测试程序:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> bins = new ArrayList<String>();
bins.add("HTRANS = 2'b00 to 2'b11");
bins.add("HTRANS = 2'b00 to 2'b11, HBURST = 3'b000 to 3'b111");
String[] bins_splitcomma = null;
String temp;
for(int i =0; i < bins.size(); i++) {
temp = bins.get(i);
if(temp.contains(",")) { // if element of bins contains comma, case 2.
bins_splitcomma = temp.split(",");
}
else {
bins_splitcomma = new String[]{temp}; // if element of bins does not contain a comma, case 1.
}
}
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
列表箱=新的ArrayList();
添加(“HTRANS=2'b00至2'b11”);
添加(“HTRANS=2'b00至2'b11,HBURST=3'b000至3'b111”);
字符串[]bin\u splitcomma=null;
字符串温度;
对于(int i=0;i
在else
路径中,您需要创建数组,而不是尝试访问空数组引用的元素0
bins_splitcomma = new String[]{temp};
这是我的完整测试程序:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> bins = new ArrayList<String>();
bins.add("HTRANS = 2'b00 to 2'b11");
bins.add("HTRANS = 2'b00 to 2'b11, HBURST = 3'b000 to 3'b111");
String[] bins_splitcomma = null;
String temp;
for(int i =0; i < bins.size(); i++) {
temp = bins.get(i);
if(temp.contains(",")) { // if element of bins contains comma, case 2.
bins_splitcomma = temp.split(",");
}
else {
bins_splitcomma = new String[]{temp}; // if element of bins does not contain a comma, case 1.
}
}
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
列表箱=新的ArrayList();
添加(“HTRANS=2'b00至2'b11”);
添加(“HTRANS=2'b00至2'b11,HBURST=3'b000至3'b111”);
字符串[]bin\u splitcomma=null;
字符串温度;
对于(int i=0;i
您的线路
bins_splitcomma[0] = temp;
正在尝试设置行中定义的空数组的元素
String[] bins_splitcomma = null;
你的线路
bins_splitcomma[0] = temp;
正在尝试设置行中定义的空数组的元素
String[] bins_splitcomma = null;
由于第一个元素不包含
,
,因此代码将进入else语句,该语句将尝试将值放在bin\u splitcomma
的第0位。但你从未初始化过它。试试这个代码
...
else {
if (bins_splitcomma == null) {
bins_splitcomma = new String[5];
}
bins_splitcomma[0] = temp; // if element of bins does not contain a comma, case 1.
}
由于第一个元素不包含
,
,因此代码将进入else语句,该语句将尝试将值放在bin\u splitcomma
的第0位。但你从未初始化过它。试试这个代码
...
else {
if (bins_splitcomma == null) {
bins_splitcomma = new String[5];
}
bins_splitcomma[0] = temp; // if element of bins does not contain a comma, case 1.
}
在else部分中,您将为空数组引用的元素0赋值。需要分配一个字符串数组。在else部分,您正在分配空数组引用的元素0。需要分配一个字符串数组。bins\u splitcomma[0]=temp;失败,因为bins\u splitcomma为空。你想用这个数组做什么?我想在一个列表中存储HTRANS,在另一个列表中存储“2'b00到2'b11”。还有第一个列表中的HBURST和第二个列表中的“3'b000到3'b111”。可能重复的i需要一个解决方案,而不是关于空异常的理论。您不需要检查逗号。如果没有逗号,split将返回一个单元素数组-这正是您试图实现的;失败,因为bins\u splitcomma为空。你想用这个数组做什么?我想在一个列表中存储HTRANS,在另一个列表中存储“2'b00到2'b11”。还有第一个列表中的HBURST和第二个列表中的“3'b000到3'b111”。可能重复的i需要一个解决方案,而不是关于空异常的理论。您不需要检查逗号。如果没有逗号,split将返回一个单元素数组,这正是您想要实现的。@MiteshKhadgi我已经添加了完整的测试程序。它为我运行,没有任何错误。在问题中编辑的完整代码中,它仍然会给我一个错误:(@MiteshKhadgi在没有新SSCCE的情况下不能做任何事情。@MiteshKhadgi我已经添加了完整的测试程序。它为我运行时没有任何错误。在问题中编辑的完整代码中仍然会给我一个错误。:(@MiteshKhadgi在没有新SSCCE的情况下不能做任何事情。