我想读取一个文本文件并将其存储为java中的字符串多维数组。
输入将是这样的
11 12 13
12 11 16
33 45 6
我想将其存储在
中 String[][] as={{"11","12","13"},
{"12","11","16"},
{"33","45"}};
我的代码
String file="e:\\s.txt";
try
{
int counterCol=0,counterRow=0;
String[][] d=null;
BufferedReader bw=new BufferedReader(new FileReader(file));
String str=bw.readLine();
String[] words=str.split(",");
System.out.println(words.length+"Counterrow");
counterCol=words.length; //get total words split by comma : column
while(bw.readLine()!=null)
{
counterRow++;
// to get the total words as it gives total row count
}
String[][] d=new String[counterRow][counterCol];
for(int x=0;x<counterRow;x++)
{
for(int y=0;y<counterCol;y++)
{
d[x][y]=bw.readLine();
//storing in array. But here gives me the exception
}
}
但是当我得到空指针异常时,我无法将其存储在数组中。如何克服这个问题
答案 0 :(得分:2)
这里有点不对劲:
BufferedReader
使用Java Collections将在这里为您提供帮助。具体来说是ArrayList
。
给这样的东西吧:
String file="e:\\s.txt";
try {
int counterRow = 0;
String[][] d = new String[1][1];
BufferedReader bw = new BufferedReader(new FileReader(file));
List<List<String>> stringListList = new ArrayList<List<String>>();
String currentLine;
while ((currentLine = bw.readLine()) != null) {
if (currentLine != null) {
String[] words = currentLine.split(" ");
stringListList.add(Arrays.asList(words));
}
}
// Now convert stringListList into your array if needed
d = Arrays.copyOf(d, stringListList.size());
for (List<String> stringList : stringListList) {
String[] newArray = new String[stringList.size()];
for (int i = 0; i < stringList.size(); i++) {
newArray[i] = stringList.get(i);
}
d[counterRow] = newArray;
counterRow ++;
}
} catch (Exception e) {
// Handle exception
}
答案 1 :(得分:1)
你得到NullPointer,因为你的数组'd'是空的:
String[][] d=null;
初始化它应该可以工作:
String[][] d= new String [counterCol][counterRow];