[英]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.