从线创建2D

时间:2016-03-30 16:43:31

标签: java matrix

我得到一个文本文件,其中第一行给出了我想要的数组大小,列和行,而其他行给了我布尔值。我必须构建这个矩阵,但可以创建数组,但不知道我必须这样做,通过其他文件行创建矩阵我内部的布尔

int width = 10;
int height = 9;

float** matrix = (float**) malloc(height*sizeof(float));

for (unsigned int i = 0; i < height; i++)
    matrix[i] = (float*) malloc(width*sizeof(float));

//This works
matrix[6][0] = 3.0f;

for (unsigned int j = 0; j < width; j++) {
    for (unsigned int i = 0; i < height; i++) {
        //This fails on [6][0]
        matrix[i][j] = 3.0f;
    }
}

我到目前为止做的是:

example: 5
         true true true true false
         false false true true false
         false false false true true
         true true true true true
         true false false true true

感谢任何帮助

3 个答案:

答案 0 :(得分:1)

可以使用BUfferedReader作为输入流创建扫描仪对象。此扫描程序可以直接解析布尔值。

检查以下代码:

    Scanner sc = new Scanner(rede);
    for(int i = 0; i<nLinhasColunas; i++){
        for(int j = 0; j< nLinhasColunas; j++){
            Boolean b = sc.nextBoolean();
            matrix[i][j] = b;
        }
    }

答案 1 :(得分:0)

一种解决方案可能是使用以下想法:

Scanner sc=new Scanner(System.in);
int nLinhasColunas =Integer.parseInt(sc.next());
matrix = new boolean[nLinhasColunas][nLinhasColunas];
    for(int i=0;i<nLinhasColunas;i++)
       for(int j=0;j<nLinhasColunas;j++)
          {
          String s=sc.next();
          if(s.equals("true"))
           {
              matrix[i][j]=true;
           }
         else
          {
           matrix[i][j]=false;
           }
          }

答案 2 :(得分:0)

简单方法

  1. 阅读文件并获取所有行
  2. 获取第一行并按空格分割以获得行数。
  3. 创建二维数组。
  4. 从列表中删除第一行('example:5')。
  5. 迭代线条。在每次迭代中,按空格分割当前行,以获得带有布尔字的数组。
  6. 使用布尔字迭代数组,将当前字转换为布尔值并将其附加到矩阵。

List<String> lines = Files.readAllLines(Paths.get("/path/to/ur/file"));
String firstLine = lines.get(0);
int size = Integer.valueOf(firstLine.split(" ")[1]); // get '5'
boolean[][] matrix = new boolean[size][size];
Lines.remove(0); // delete the first line

for(int i=0; i<lines.size(); i++) {
     String[] lineParts = lines.get(i).split(" ");
     for(int k=0; k<lineParts.length; k++) {
     matriz[i][k] = new Boolean(lineParts[k]);
    }
}

System.out.println(matrix);