使用方法的输出进行循环的下一次迭代

时间:2018-05-11 13:02:48

标签: java loops methods return

请参阅我之前的问题,以获得有关该计划应该做什么的进一步说明。所以你们不必回读病了也在这里添加相关的东西。问题将在底部。

java parsing text file and handling each line differently

文本文件的格式如下:

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();
        }

    }

我的问题:我试图从方法中获取输出,解析整数,然后替换文本文件中前两个整数。对于循环的第二次迭代,方法应该采用的三个整数是从方法的第一次调用返回的两个整数,然后是文本文件的第三行上的整数,依此类推。 主while循环的第三次迭代应该采用从方法的第二次迭代返回的两个整数,以及文本文件的第四行。

以下代码替换了数组aliveSoldiers中的值,但似乎没有输回到方法中。

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

0 个答案:

没有答案