Читать в массиве и отображать массив - PullRequest
0 голосов
/ 22 сентября 2018

Я новичок в Java, и у меня возникли проблемы с этим. Мне нужно сделать 2 разные программы.один, чтобы сделать текстовый файл и другой, чтобы выполнить.Первая программа делает сетку.2-й читает txt в методе, а затем я должен вызвать его в основном.Я не могу понять это.

Исходный массив (txt.file):

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Random;
import java.util.Collections;

public class Grid {
    public static void main(String[] args) {
        ArrayList<Integer> indNum = new ArrayList<Integer>();
        ArrayList<Integer> elemNum = (ArrayList<Integer>) indNum.clone();
        ranNum(indNum);
        ranNum(elemNum);

        String grid[][] = mGrid();
        replaceGrid(grid, indNum.get(0), elemNum.get(0));
        replaceGrid(grid, indNum.get(1), elemNum.get(1));
        replaceGrid(grid, indNum.get(2), elemNum.get(2));
        disGrid(grid);
    }

    public static String[][] mGrid() {
        String[][] Array = { { " *", " *", " *", " *", " *" },
                             { " *", " *", " *", " *", " *" },
                             { " *", " *", " *", " *", " *" },
                             { " *", " *", " *", " *", " *" },
                             { " *", " *", " *", " *", " *" }       
                           };
        return Array;
    }

    public static void disGrid(String[][] array) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                System.out.print(array[i][j]);
            }
            System.out.println();
        }
    }

    public static ArrayList<Integer> ranNum(ArrayList<Integer> ran) {
        for (int i = 0; i < 5; i++) {
            ran.add((i));
        }
        Collections.shuffle(ran);
        ran.remove(4);
        ran.remove(3);
        return ran;
    }

    public static String[][] replaceGrid(String[][] array, int num1, int num2) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                array[num1][num2] = " O";
            }
        }
        return array;
    }
}

Вывод:

 O * * * *
 * * * * *
 * * * * *
 * * O * *
  * * * O *

три O случайно размещены в сетке. 2-я часть Считывание и отображение путем выполнениямассив:

package Execute;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Random;
import java.util.Collections;
import java.io.*;

  public class part2 {
    public static void main(String[] args) {
        ArrayList<String> makeGrid= new ArrayList<String>();
         readFile(makeGrid);            
        System.out.print(makeGrid); 
    }

    public static void readFile(ArrayList<String> exec) {
        try {
            Scanner reader = new Scanner(new File("Grid.txt"));
            do {
                exec.add(reader.nextLine());
            }while (reader.hasNext());
        } catch (FileNotFoundException fnf) {
            System.out.println("File was not found");
        }
    }   
}

Когда я запускаю это, он не сохраняет старую сетку и не отображает ее.Вместо этого он просто печатает весь код, который я написал в одну строку.Как мне выполнить код и сохранить его в arraylist, чтобы я мог манипулировать им?

1 Ответ

0 голосов
/ 22 сентября 2018

Во-первых, вы хотите while (reader.hasNextLine())

Вы можете вручную добавить новую строку назад, если хотите, чтобы массив отображался в виде нескольких строк

exec.add(reader.nextLine() + "\n");

Или вы можете распечатать всеline, а не только arraylist

readFile(makeGrid);
for (String line : makeGrid) {
    System.out.println(line);
}

Кстати, не рекомендуется передавать изменяемые коллекции в методы в качестве параметров.Вы должны return новый массив из readFile()

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