通过按钮和.txt文件输入2D数组处理Java

时间:2012-02-29 13:34:24

标签: java user-interface processing

在对这个和许多其他互联网社区进行彻底调查后,我未能解决我的问题。它是关于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,但我似乎无法将读者移到第一行以外的行上。

2 个答案:

答案 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]