Хранить целые числа в 2d-массиве из текстового файла - PullRequest
0 голосов
/ 09 мая 2020

Привет всем, я работаю над проектом, мне дали текстовый файл, который содержит координаты x и y города. Вот образец txt файла.

401 841

3082 1644

7608 4458

7573 3716

7265 1268

6898 1885

1112 2049

5468 2606

5989 2873

4706 2674

4612 2035

6347 2683

6107 669

7611 5184

7462 3590

7732 4723

Цифры слева - координаты x, а числа справа - координаты y. Я пытаюсь сохранить числа в массиве 2d [i] [j], где i содержит координату x, а j содержит координаты y. Вот код для хранения элементов на данный момент

public static void readFile(String file) throws FileNotFoundException
{
    File Coordinate_File = new File("C:\\Users\\hasan\\Downloads\\Bahcesehir University\\Year 3\\Semester 2\\Formal Languages and Automa Theory\\Project\\att48_xy.txt");
    Scanner ScanFile = new Scanner(Coordinate_File);
    int ctr = 0; 
    int y = 0;
    int x = 0;
    float[][] Coordinates; 
    x = ScanFile.nextInt();
    y = ScanFile.nextInt(); 
    Coordinates = new float[x][y]; 
    for(int i = 0; i < x; i++)
    {
        for(int j = 0; j < y; j++)
        {
            Coordinates[i][j] = ScanFile.nextInt();
            System.out.println(Coordinates[i][j]);

        }
    }


}

Однако у меня проблемы с ним. Код пропускает первую строку текстового файла, а затем после нескольких итераций не останавливается, когда достигает конца текстового файла.

Мы будем благодарны за вашу помощь, спасибо.

1 Ответ

0 голосов
/ 09 мая 2020

Я думаю, что есть много способов сделать это. Один из них ниже:

        try {
            int[][] num = Files.lines(Paths.get("...File_Path"))
                    .map(s -> {
                        String[] s1 = s.split(" ");
                        return new int[]{Integer.parseInt(s1[0]), Integer.parseInt(s1[1])};
                    })
                    .toArray(int[][]::new);
        } catch (IOException e) {
           .../Handler
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...