如何通过charachter-by-symbol方法读取文件并将其放入数组?

时间:2018-03-31 18:35:02

标签: java

我有一个文字文件,里面有很多单词。他们用两个三个词组成':',并通过''与其他群体分开。

有100个小组。

例如:

  

程序员:网站设计师:系统   管理员。生物学家:药剂师:化学老师。

点前的所有单词都是单个组。

我的目的是将所有单词组添加到二维数组[10] [10](整个大小为100个元素)。

我的代码:

public static void main(String[] args) throws FileNotFoundException {
    String[][] array = new String[10][10];

    try (BufferedReader br = new BufferedReader(
            new FileReader("C:\\Users\\Alexey\\eclipse-workspace\\Plugin\\src\\MatProList.txt"))) {

        for (int i = 0; i < 10; i++) {
            for (int c = 0; c < 10; c++) {
                while ((char)br.read() != '.') {
                    array[i][c] = array[i][c] + (char)br.read();
                }
            }


            if (br.read() == -1) {
                break;
            }
        }
    } catch (IOException ex) {

        System.out.println(ex.getMessage());
    }
}

这里有什么问题?请帮忙。

1 个答案:

答案 0 :(得分:0)

即使我更喜欢自己使用ListArray,我也会这样做。

public static void main(String[] args) {
    String[][] groups = new String[10][10];

    try {
        BufferedReader reader = new BufferedReader(new FileReader("somefile"));

        String line = reader.readLine();
        int row = 0;
        int column = 0;

        while (line != null) {
            String[] groupArray = line.split("\\.");
            for (int i = 0; i < groupArray.length; i++) {
                groups[row][column] = groupArray[i];
                column++;
                if (column > 9) {
                    column = 0;
                    row++;
                }
                if (row > 9) {
                    //throw exception or just ignore further groups
                }
            }
            line = reader.readLine();
        }
    } catch (IOException e) {
        //TODO: handle exception
    } 
}

关于你的代码,主要的问题是你的while循环,你读取两个char但只使用一个(首先在循环标题中,然后在分配时)。

如果你想通过char读取你的char,我会像这样改变while循环

StringBuffer nextGroup = new StringBuffer();
char nextChar = br.read();
while (nextChar != '.' && nextChar != -1) {
    nextGroup.append(nextChar);
    nextChar = br.read();
}
array[i][c] = nextGroup.toString();