используя вывод метода для следующей итерации цикла - PullRequest
0 голосов
/ 11 мая 2018

Пожалуйста, смотрите мой предыдущий вопрос для дальнейшего объяснения того, что программа должна делать.Так что вы, ребята, не должны читать плохо, а также добавить соответствующие материалы здесь.Вопрос будет внизу.

текстовый файл java для разбора и обработка каждой строки по-разному

Формат текстовых файлов следующий:

200 345 
36

и

200 345 
36
45
36
21

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

public class  costOfConflictTest
{

    public static void costOfConflictTest() throws FileNotFoundException 
    {
        System.out.print('\u000c');
        System.out.println("please enter the name of the text file you wish you import. Choose either costs.txt or lotsacosts.txt Nothing else");
        Scanner keyboard = new Scanner(System.in);
        String filename = keyboard.nextLine();
        File file = new File(filename);

        System.out.println("You have loaded file: \t\t\t" + filename);
        BufferedReader in = new BufferedReader(new FileReader(file));

        String element1 = null;
        try {
            element1 = in.readLine();
        }catch (Exception e) {
            // handle exception
        }

        String[] firstLine = element1.split(" ");

        Arrays.stream(firstLine).forEach(fl -> 
        {
            System.out.println("First line element: \t\t\t" + fl);
        });

        int[] results = new int[100];
        String errorMessage = "that's a wrap!";
        for (int i = 0; i < firstLine.length; i++) 
        {
            try {
                int stuff = Integer.parseInt(firstLine[i]);
                results[i] = stuff;
            }
            catch (NumberFormatException nfe) {
                System.out.println(results);
            System.out.println(errorMessage);   
            }
        } 

вторая часть: в этой части немного сложно прочитать, что происходит.Он берет оставшиеся строки, разбирает целые числа в массив aliveSoldiers.Он берет два целых числа в первой строке и первое целое число во второй строке и помещает их в метод, который возвращает строку из двух целых чисел.Эта строка анализируется, и предполагается, что выходные данные равны двум первым значениям в массиве aliveSoldiers, чтобы метод мог быть вызван снова.

        // parsing remaining days 
        String otherElement = null;

        try {
            while ((otherElement = in.readLine()) != null) {
                System.out.println("Line to process:\t\t\t" + otherElement);
                String[] arr = otherElement.split(" ");
                int [] things = new int [100];
                for (int k = 0; k <arr.length; k++) 
                    {
                    try {
                        int thingsResult = Integer.parseInt(arr[k]);
                        things[k] = thingsResult;
                        System.out.println("number of days: \t\t\t"+things[k]);
                        int[] aliveSoldiers = new int[100];
                        aliveSoldiers[0] = results[0];
                        aliveSoldiers[1] = results[1];
                        aliveSoldiers[2] = things[k];

                        String returnAliveSoliders = myCalculations(aliveSoldiers[0], aliveSoldiers[1], aliveSoldiers[2]);
                        System.out.println(returnAliveSoliders);

                        String[] newItems = returnAliveSoliders.split(" ");
                        int[] newResults = new int[100];
                        for (int f = 0; f < newItems.length; f++) 
                        {
                            try {
                                int newParse = Integer.parseInt(newItems[f]);
                                newResults[f] = newParse;

                            }
                            catch (NumberFormatException nfe) {
                                System.out.println(results);
                                System.out.println(errorMessage);   
                            }
                        } 
                        aliveSoldiers[0] = newResults[0];
                        aliveSoldiers[1] = newResults[1];
                        System.out.println(aliveSoldiers[0]);
                        System.out.println(aliveSoldiers[1]);
                    }
                    catch (NumberFormatException nfe) {
                        System.out.println(results);
                        System.out.println(errorMessage);   
                    }
                } 

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Мой вопрос: я попытался взять выходные данные метода, проанализировать целые числа и затем заменить первые два целых числа в текстовом файле.Для второй итерации цикла три целых числа, которые должен принять метод, - это два целых числа, возвращаемые из первого вызова метода, а затем целое число в 3-й строке текстового файла и т. Д.Третья итерация основного цикла while должна принимать два целых числа, возвращенных из второй итерации метода, и 4-ю строку текстового файла.

следующий код заменяет значения в массиве aliveSoldiers, но, похоже, не вводит обратно в метод.

aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];
...