-2

我想读取一个文本文件并将其存储为 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
            }

        }

但是当我得到空指针异常时,我无法将它存储在数组中。如何克服这个问题

4

2 回答 2

2

这里有很多问题:

  1. 数组未初始化
  2. 您没有使用BufferedReader
  3. 您使用逗号而不是示例数据中指定的空格进行分割

使用 Java集合将在这里为您提供帮助。具体来说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
        }
于 2013-11-07T13:44:36.693 回答
1

你得到 NullPointer 因为你的数组 'd' 为空:

String[][] d=null;

初始化它,它应该可以工作:

String[][] d= new String [counterCol][counterRow];
于 2013-11-07T12:43:10.313 回答