在对这个和许多其他互联网社区进行彻底调查后,我未能解决我的问题。它是关于ControlP5按钮,我的目标是从以前格式化的文本文件中导入2D数组,其中包含两列,19行和空格分隔值。现在我的代码工作了,但是我指定用来保存txt中的值的2D arrray并没有得到所有值,而只是第一行中的最后一对。我知道for循环遍历所有值,但仅将它们存储在第一行中。我不知道怎么把它推到另一排阅读。这是我的代码:
if(theEvent.isController())
{
if(theEvent.controller().name() == "mean shape males")
{
String loadPath1 = selectInput();
reader = createReader(loadPath1); //new BufferedReader
int x=0; //rows
int y=0; //columns
String smaLine;
try
{
while ((smaLine = reader.readLine()) != null)
{
String[] values = smaLine.split(", ");
for(int i = 0; i < values.length; i++)
{
float[] testC = float(split(values[i], " "));
for (int j = 0; j < testC.length; j++)
{
mat1[j][i] = testC[j]; //THIS IS THE PROBLEMATIC MATRIX
}
}
x = x+1;
}
}
catch (IOException e)
{
e.printStackTrace();
}
mat1max = maxRet(mat1);
mat1min = minRet(mat1);
inputMat = new Grid(2,19,10,130,22,mat1,mat1min,mat1max);
}
}
我在Stack Overflow上使用的所有建议主要来自这篇帖子How to print 2D Array from .txt file in Java,但我似乎无法将读者移到第一行以外的行上。
答案 0 :(得分:1)
我猜测你不是要重置mat1
中的元素,而是想为每一行创建一个新矩阵并将它们存储在某种列表中。您可以这样做:
List<?> matrices = new ArrayList<?>();
while ((smaLine = reader.readLine()) != null)
{
float[][] mat = new float[MATRIX_ROWS][MATRIX_COLUMNS];
String[] values = smaLine.split(", ");
for(int i = 0; i < values.length; i++)
{
float[] testC = float(split(values[i], " "));
for (int j = 0; j < testC.length; j++)
{
mat[j][i] = testC[j];
}
}
matrices.add(mat);
x = x+1;
}
顺便说一下,x
在哪里使用?
答案 1 :(得分:0)
将您的mat1[j][i] = testC[j]
换为mat1[i][j] = testC[j]