我正在做一个学校作业,我需要使用我编写的某些方法从ArrayList访问数据。
public static void main(String[] args) throws IOException {
String fileName = "USPopulation.txt";
File fileReader = new File(fileName);
ArrayList<Integer> populations = new ArrayList<Integer>();
Scanner inputFile = new Scanner(fileReader);
while (inputFile.hasNext()) {
populations.add(inputFile.nextInt());
}
System.out.println(populations.greatest());
/**
* Receives an ArrayList and returns the index of the value that has the
* greatest increase from the previous value in the collection.
*
* @param populations
* @return greatestI
*/
public static int greatest(ArrayList<Integer> populations) {
int greatestDiff = 0;
int greatestI = 0;
int i = 0;
while (i < populations.size() - 1) {
int tempDiff = populations.get(i + 1) - populations.get(i);
if (tempDiff >= greatestDiff) {
greatestDiff = tempDiff;
greatestI = i + 1;
}
i++;
}
return greatestI;
}
}
当我尝试调用我的方法时,最棒的是,我遇到了错误
对于ArrayList类型,未定义greatest()方法。
我以为我需要的定义包含在方法的参数中,但显然没有。
错误消息以及我发现的故障排除方法使我似乎需要将ArrayList populations
转换为一种类型的方法,该方法知道如何处理,但我尝试的任何方法似乎都无效。
感谢任何帮助。感谢任何花时间帮助菜鸟的人。 返回minimumI;
答案 0 :(得分:0)
您应该这样称呼
greatest(populations);
您的调用方式就像调用一个在Arraylist类中定义的函数,而不是..您的函数只是将arraylist作为输入的方法
答案 1 :(得分:0)
您需要在这里了解两件事
populations
是ArrayList类型的对象
greatest()
是您在自己的类中编写的一种方法。它不属于ArrayList类
当您尝试访问populations.greatest()
时,基本上是在尝试在类greatest()
中运行方法ArrayList
。因此,您应该得到一个异常“类型ArrayList的greatest()方法未定义”
相反,您需要在您自己的类的对象上或以静态方式调用方法greatest(arrayListObject)
。由于您已经将方法定义为static
,因此可以通过传递对象populations
作为参数来直接调用它,如下所示。
System.out.println(greatest(populations));
答案 2 :(得分:0)
/ *通过传递参数种群(arrayList)来调用最大的函数,并且您也错过了主函数的右括号。
* /
公共静态void main(String [] args)引发IOException {
String fileName = "USPopulation.txt";
File fileReader = new File(fileName);
ArrayList<Integer> populations = new ArrayList<Integer>();
Scanner inputFile = new Scanner(fileReader);
while (inputFile.hasNext()) {
populations.add(inputFile.nextInt());
}
System.out.println(greatest(populations));
}
/**
* Receives an ArrayList and returns the index of the value that has the
* greatest increase from the previous value in the collection.
*
* @param populations
* @return greatestI
*/
public static int greatest(ArrayList<Integer> populations) {
int greatestDiff = 0;
int greatestI = 0;
int i = 0;
while (i < populations.size() - 1) {
int tempDiff = populations.get(i + 1) - populations.get(i);
if (tempDiff >= greatestDiff) {
greatestDiff = tempDiff;
greatestI = i + 1;
}
i++;
}
return greatestI;
}