如何在java中打印2d数组中的文本文件?

时间:2011-04-29 11:42:51

标签: java

  

可能重复:
  How to print 2D Array from .txt file in Java

8.00 28.00
18.00 28.00 8.00 23.00
12.00 20.00 15.00 30.00 12.00 32.00 12.00 20.00 18.00 31.00 29.00 25.00 6.00 28.00
7.00 28.00
6.00 24.00 14.00 30.00 11.00 23.00 12.00 20.00 31.00 24.00 11.00 20.00 17.00 23.00 14.00 32.00 15.00 23.00 8.00 20.00
17.00 31.00 7.00 20.00 12.00 23.00 15.00 20.00 12.00 20.00 21.00 20.00 27.00 27.00 18.00 20.00 25.00 27.00 46.00 13.00 26.00 10.00 47.00 22.00 44.00 14.00 34.00 4.00 34.00 4.00
44.00 7.00
39.00 5.00
20.00 0.00
43.00 11.00 43.00 25.00 34.00 2.00
25.00 10.00 50.00 9.00
25.00 9.00
39.00 2.00
34.00 7.00
44.00 15.00 36.00 3.00
40.00 5.00
49.00 21.00 42.00 7.00
35.00 1.00
30.00 2.00
31.00 13.00 53.00 12.00 40.00 4.00
26.00 4.00
50.00 55.00 57.00 51.00 62.00 52.00 56.00 52.00 59.00 40.00 61.00 68.00 66.00 49.00 57.00 49.00 62.00 58.00 47.00 58.00 53.00 40.00 60.00 54.00 55.00 48.00 56.00 65.00 67.00 56.00 55.00 43.00 52.00 49.00 67.00 62.00 68.00 61.00 65.00 58.00 46.00 53.00 46.00 49.00 47.00 40.00 64.00 22.00 64.00 54.00 63.00 64.00 63.00 56.00 64.00 44.00 63.00 40.00

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;


public class csvimport5 {


public static void main(String[] args) throws IOException {


    double [][] data = new double [87][2];  
    File file = new File("buydata.txt");
    int row = 87;
    int col = 2;
    BufferedReader bufRdr  = new BufferedReader(new FileReader(file));
    String line ;


    //read each line of text file
    while((line = bufRdr.readLine()) != null && row < data.length)
    {   

    StringTokenizer st = new StringTokenizer(line," ");
    while (st.hasMoreTokens())
    {

        //get next token and store it in the array
        data[col][row] = Double.parseDouble(st.nextToken());
        col++;

    }
    col=0;

    }

    row++;

     for( row = 0; row<data.length; row++){
   for( col = 0; col<data.length; col++){         

    System.out.print(" "+data[86][1]);
   }
   System.out.println();
     }






  }

}

它给出的输出类似于0.0 0.0 0.0 0.0 请帮我打印数组格式的文件

2 个答案:

答案 0 :(得分:2)

您始终打印System.out.print(" "+data[86][1]);并在阅读之前将行初始化为87.

您也可以double [][] data = new double [87][2];执行[row] [col],但随后使用[col] [row]设置值。请确保订单一致。你不能在那条线上得到ArrayIndexOutOfBoundsException
data[col][row] = Double.parseDouble(st.nextToken());? (编辑:我刚看到你的另一个问题,所以你确实得到了AIOOBE;))

此while循环永远不会运行:while((line = bufRdr.readLine()) != null && row < data.length)。您将行初始化为87,它等于data.length,因此语句row < data.length始终为false。

编辑:我现在在这里停下来。我建议你把你的程序放在调试器上,看看你的代码到底做了什么。

答案 1 :(得分:0)

您应该学习如何使用调试器! Here是一个好的开始!