繁体   English   中英

从文本文件读取数据并将其保存到2D数组中

[英]reading data from text file and save it into 2D array

我是Java编程的新手...我正在尝试从文本文件中读取数据并将其保存到2D数组中。 因此,基本上,程序将接收参数(IP)并查找具有相同IP号的文件。 程序将读取每一行并存储到2D数组中。

我的尝试:

String ipNum = request.getParameter("ipNum");
String root = getServletContext().getRealPath("/");
String dailyPath = root + "\\" + ipNum +".txt";
int[][] myarray = new int[3][6];
    BufferedReader br = new BufferedReader(new FileReader(dailyPath));   
    String line = " ";
    String [] temp;
    while ((line = br.readLine())!= null){ 
        temp = line.split(" "); 
        for(int i = 0; i<myarray.length; i++) {
            for (int j = 0; j<myarray.length; j++) {    
                myarray[i][j] = Integer.parseInt(temp[i]);
            }
        }
    }

数据:

CPU 30 30 30 30 30 30
RAM 70 70 70 70 70 70
HAR 80 80 80 80 80 80
NET 100 100 100 100 100 100

我遇到的问题是,当我调用数组时,我总是得到100或0(假设为空)

因此,例如myarray [1] [2]应该输出30,但我得到100 myarray [2] [4] = 70但我得到100 ...

在过去的几个小时中,我尝试使用该代码,但无法弄清楚...我的整个代码是错误的还是什么?

感谢帮助!

是的,您要迭代两次,因此用最后一个值填充数组...请尝试以下代码:

int i = 0;
while ((line = br.readLine())!= null){ 
    temp = line.split(" "); 
    for (int j = 0; j<myarray[i].length; j++) {    
        myarray[i][j] = Integer.parseInt(temp[j]);
    }
    i++;
}

希望这可以帮助...

除了乔什(Joshs)的话,您还以错误的方式设置了终止条件。

for(int i = 0; i< myarray.length; i++) {
    for (int j = 0; j< myarray[i].length; j++) {    
         myarray[i][j] = Integer.parseInt(temp[i]);
    }
}

这样,您可以遍历数组,但不能使用它来解决问题。 相反,您需要使用1个while循环和1个for循环。

您的“ while”循环和第一个“ for”循环正在执行类似的任务-对于您阅读的每一行,您都在遍历数组中的每一行,并用您正在阅读的行填充其各列。 每个值都是100,因为您读取的最后一行充满了100s。

我建议删除第一个“ for”循环,声明“ int i = 0;”。 在“ while”循环之前,在for循环的底部(但在内部)为“ i ++”。

@Vivek指出您需要为j计数器测量“ myArray [i] .length”。

在我看来,您正在阅读文本的每一行,然后将该行解析为2D数组。 这并不是完全正确,因为每一行都可以视为一行。 也许您可以对while ((line = br.readLine())!= null)循环中读取的每一行使用一个计数器,然后仅在计数器索引处读取2D数组的行...像这样:

int rowCounter = 0;
while ((line = br.readLine())!= null) {
    for(int i = 0; i<myarray.length; i++)
        myarray[rowCounter][i] = Integer.parseInt(temp[i]);
    rowCounter++;
}

附带说明一下,如果您确实想索引到多维数组,那么也会遇到一个附带问题。 在您的两个循环中,您都在迭代直到达到最大行数。 对于遍历各列的j循环,这可能会导致问题。 而是在使用2D循环时尝试:

for(int i = 0; i < array.Length; i++)
    for(int j = 0; j < array[0].Length; j++)
        //Do some stuff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM