循环数组让我循环

Loop Array Making Me Loopy

所以我已经在同一个示例问题上解决了一个星期了。我知道它可能 看起来很容易,但我发现我越看它或改变它,就越 我很困惑。我觉得我让这比它更难了 需要是。我加载的数组在 Try-Catch 部分正确显示,但我需要用它自己的方法显示它,我称之为 listOfAges()。这会是什么样子?感谢您的任何回复,请提供帮助。

class ArrayDemo {
public static void main(String[] args) {

    int[] anArray;
    int ageCount = 0;
    int age;
    String filename = "ageData.dat";

    anArray = new int[50];
    /* The file has 50 numbers which represent an employee's age */
    try {
        Scanner infile = new Scanner(new FileInputStream(filename));

        while (infile.hasNext()) {

            age = infile.nextInt();
            ageCount += 1;

            System.out.println(ageCount + ". " + age + "\n");
            /* 
             * When i run just this, the output is correct...
             * 
             * But i don't want the output here, i just want to gather 
             * the information from the file and place it at the bottom inside
             *  the method displayAges().*/

        }

        infile.close();

    } catch (IOException ex) {
        ageCount = -1;
        ex.printStackTrace();
    }


    public void listOfAges() {
        System.out.print("  I want to display the data gathered from ageData.dat in this method  ");
        System.out.print("  Also, i receive this error message when i try: 'Illegal modifier for parameter listOfAges; only final is permitted'  ")
    }  


}
}

首先,您必须将值存储在数组中:

while (infile.hasNext()) {
    age = infile.nextInt();
    anArray[ageCount] = age;
    ageCount += 1;
}

您的下一个问题是您在 main() 方法 定义了 listOfAges() 方法。定义必须在外面。您还需要将您的数组作为参数传递给您的方法,以便您可以遍历数组值以打印它们:

public void listOfAges(int[] ages) {
    // use a loop here to print all your array contents
}

所以我假设您想在您的方法中显示数组中的每个元素。您的第一个问题是 main 方法是静态的,而您正试图调用一个非静态的方法 (listOfAges)。通过简单地在方法中添加单词 static 使其成为静态来改变这一点。您还将此方法放在 main 方法中。您需要将其移到括号之外。

其次,要显示您需要循环遍历的内容,但是您保存数据的数组需要在 main 方法之外。而不是

int[] anArray;

在 main 方法中,将其删除并将其移至 main 方法的声明上方。您还需要将其设为静态变量。

static int[] anArray;

最后在 listOfAges 中,添加循环遍历它的代码。

for (int i = 0; i  < anArray.length; i++) {
    System.out.println(anArray.length + ". " + anArray[i]);
}

我不是 100% 确定你在问什么,但在这里:

} infile.close(); } catch (IOException ex) { ageCount = -1; ex.printStackTrace(); }

在您的 While.infile 循环中,您将关闭 } infile.close() 上的 while 循环,而不是打开一个新循环。所以只需将其更改为 { infile.close (); } 相反...

由于我不确定您到底在问什么,这将是我能给您的最佳答案,希望对您有所帮助。