循环数组让我循环
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 (); } 相反...
由于我不确定您到底在问什么,这将是我能给您的最佳答案,希望对您有所帮助。
所以我已经在同一个示例问题上解决了一个星期了。我知道它可能
看起来很容易,但我发现我越看它或改变它,就越
我很困惑。我觉得我让这比它更难了
需要是。我加载的数组在 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 (); } 相反...
由于我不确定您到底在问什么,这将是我能给您的最佳答案,希望对您有所帮助。