Как заполнить 2D массив (Matrix) из входного текста, взятого из аргументов? - PullRequest
0 голосов
/ 24 марта 2019

Мой мозг, вероятно, перестал работать, поэтому мне очень нужна ваша помощь с этим.

Итак, у меня есть входной текстовый файл, отформатированный так:

3  //Number of Heroes (nodes lets say)
43 43 // left int = hp, right int = damage etc...
22 444
12 43  
2 //Number of enemies
20 39 //likewise with the heroes

//The latter (enemies) is not yet implemented, cause I am stuck with the    
//first part (so let's say the part before '2' is present in the input
//txt at the moment

Моя основная задача такова (я хочу иметь возможность принимать несколько файлов в будущем):

    public static void main(String[] args) {
    Q2 ks = new Q2();
    int length = args.length;
    for (int i = 0; length > 0; i++) {
        ks.readFile(args[i]);
        break;
    }
}  

И это мой readFile (), где я пытаюсь заполнить матрицу данными (но с треском проваливаюсь, потому что мой мозг действительно перестал работать):

public int[][] readFile(String inputName) {
    BufferedReader reader;
int Matrix[][] = null;

    try {
    reader = new BufferedReader(new FileReader(inputName));
    String line = reader.readLine();
    int numberOfHeroes = Integer.parseInt(line);
    Matrix = new int[numberOfHeroes][2];
    line = reader.readLine();
            System.out.println(numberOfHeroes);

            for (int i = 0; i < numberOfHeroes; i++) {
                    int hitpoints = 0;
                    int damage = 0;
                    //while (line != null) {
                            String splittedLine[] = line.split(" ");
                            //while (splittedLine[1] != null){
                                    hitpoints = Integer.parseInt(splittedLine[0]);
                                    damage = Integer.parseInt(splittedLine[1]);
                                    Matrix[i][0] = hitpoints;
                                    Matrix[i][i+1] = damage;
                                    line = reader.readLine();
                            //}
                    //}

            }


            System.out.println("====GRAPH====");
            for (int i = 0; i < numberOfHeroes; i++) {
        for (int j = 0; j < 2; j++) {
            System.out.print(Matrix[i][j] + " ");
        }
                    System.out.println();
                }
    System.out.println("============");

        } catch(IOException e) {
    return null;
        }

    return Matrix;
}

1 Ответ

0 голосов
/ 25 марта 2019

Вы поместили значение damage в неправильную ячейку. Вместо Matrix[i][i+1] = damage; вы хотите сделать Matrix[i][1] = damage;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...