打印阵列的行内容&纵列

时间:2011-04-30 10:31:21

标签: java java.util.scanner

这是代码:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ReadFileContents {
    public static void main(String[] args) throws IOException {
    Scanner s = new Scanner(new File("rfg.txt"));
    List<float[]> list = new ArrayList<float[]>();
    while (s.hasNextLine()) {
        String[] line = s.nextLine().split(" ");
        list.add(new float[] { Float.parseFloat(line[0]),Float.parseFloat(line[1]),Float.parseFloat(line[2]) });
        }  
        int numberOfRows = list.size();
        int numberOfColumns = 3; 
        float[][] floatValues = new float[numberOfRows][numberOfColumns];
        for (int i = 0; i < numberOfRows; i++) {
            floatValues[i] = list.get(i);
            System.out.println(floatValues[i][0] + " " + floatValues[i][1] + " " + floatValues[i][2]);
            }
        }   
 }

这里是.txt文件:

5.1 3.5 1.4 2.0     
4.9 3.0 1.4 40.1    
4.7 3.2 1.3 1.4     
4.6 3.1 1.5 5.1             
5.0 3.6 1.4 4.1                 
5.4 3.9 1.7 9.4         
4.6 3.4 1.4 4.5         
5.0 3.4 1.5 3.51        
4.4 2.9 1.4 4.0         
4.9 3.1 1.5 1.45 

它只提供3列的o / p:

但是我想要打印文件中具有相同尺寸的文件(具有“n * m”维度的文件)。可以根据给定文件更改尺寸。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望使用浮点值矩阵解析文件。您想通过读取文件并将其存储在float[][]中来确定尺寸。在这里我相信你想要的:

File file = new File("rfg.txt");
List<float[]> list = new ArrayList<float[]>();
Scanner scanner = new Scanner(file).useDelimiter("\n");
while (scanner.hasNext()) {
    String[] values = scanner.next().trim().split(" ");
    float[] floats = new float[values.length];
    for (int i = 0; i < values.length; i++) {
        floats[i] = Float.parseFloat(values[i]);
    }
    list.add(floats);
}

float[][] values = new float[list.size()][];
for (int i = 0; i < list.size(); i++) {
    values[i] = list.get(i);
    for (int j = 0; j < values[i].length; j++) {
        System.out.print(values[i][j] + " ");
    }
    System.out.println();
}

答案 1 :(得分:0)

您只从文本文件中读取3列。如果列数是动态的,那么您可以使用如下循环:

  while (s.hasNextLine()) {
    String[] line = s.nextLine().split(" ");
    float[] f = new float[line.length];
    for(int i = 0; i < line.length; i++){
        float[i] = float.parseFloat(line[i]);
    } 
    list.add(f);
    numColumns = line.length;
  }

这样,列数就成为文件中的列数。