从由数字组成的字符串中一一提取每个数字

时间:2019-07-15 20:59:53

标签: java arrays multidimensional-array

我有一个文件,该文件具有x * y数字,例如12行和21列 从外部文件开始,就这样

BufferedReader jack = 
              new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);
    //StringBuilder comfy = new StringBuilder();
    String   line = null;
    while ((jack.readLine()) != null) {
        line = jack.readLine();         


    }
    //System.out.println(comfy.toString());

    String[] strs = line.trim().split("\\s+");
    for (int fes=0;fes<511;fes++) {
        System.out.println("this is fes"+ Integer.parseInt(strs[fes]));
    }
    System.out.println("this is strs     " );
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size2; j++) {
            //System.out.println(jack.read());
            arr[i][j] = Integer.parseInt(strs[j]);
            //System.out.println("this is reader "+arr[i][j] + "  "+  i +"   " + j);
        }
    }

}

我需要的是将它们放入多维数组中 arr 当我打电话给arr[2][5]arr[3][5]时,我分别得到76和76,我分别想要76和55

2 个答案:

答案 0 :(得分:0)

问题在于您仅使用j来获取要解析的字符串,因此基本上将数组的第一行复制到所有其他行。

您需要考虑到应该位于的行,然后用于计算输入数组strs中位置的公式为

(row number) * (length of one row) + (offset in row)

或者在您的特定情况下,您希望将parseInt(strs[j])替换为parseInt(strs[i*size2 + j])

答案 1 :(得分:0)

您遇到的问题是,您正在while循环中读取整个文件,但只保存了最后一行。另外,由于Jack.readline()会读取一行并继续前进,因此您要注意不要在您的状态检查中丢失该行。如果您在阅读每一行时都处理起来比较容易。看起来可能像这样:

BufferedReader jack = 
          new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);

String   line = jack.readLine();
int rowNum = 0;
while (line != null) {
    String[] strs = line.trim().split("\\s+");
    int colNum = 0;
    for (String s : strs){
        arr[rowNum][colNum]=Integer.parseInt(s);
        colNum++;
    }
    line = jack.readLine();
    rowNum++;
}


}