Методы определения неисправностей для взаимодействия с ArrayList - PullRequest
0 голосов
/ 24 января 2019

Я работаю над школьным заданием, где мне нужно получить доступ к данным из 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;
    }
}

Когда я пытаюсь вызвать свой метод, лучше всего, явстретился с ошибкой

Метод great () не определен для типа ArrayList.

Я думал, что нужное мне определение было включено в параметр моего метода, но, видимо, нет.

Сообщения об ошибках и обнаруженные мной неисправности делают его похожим наМне нужно преобразовать ArrayList populations в тип, с которым методы справляются, но, похоже, ничего из того, что я пробую, не работает.

Цените любую помощь.Спасибо всем, кто нашел время, чтобы помочь новичку.вернуть smalllestI;

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Здесь нужно понять две важные вещи

populations - это объект типа ArrayList

greatest() - это метод, который вы написали по-своемуучебный класс.Он не является частью класса ArrayList

Когда вы пытаетесь получить доступ к populations.greatest(), вы в основном пытаетесь запустить метод greatest() в классе ArrayList.Таким образом, вы должны получить исключение "Метод great () не определен для типа ArrayList"

Вместо этого вам нужно вызвать метод greatest(arrayListObject) для вашего собственного объекта.класс или статическим способом.Поскольку вы уже определили свой метод как static, вы можете напрямую вызвать его, передав объект populations в качестве аргумента, как показано ниже.

System.out.println(greatest(populations));
0 голосов
/ 24 января 2019

/ * вызовите вашу самую большую функцию с передачей значений параметров (arrayList), а также вы пропустили закрывающую скобку для главной функции.
* /

public static 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;

}
0 голосов
/ 24 января 2019

Вы должны вызывать его таким образом

greatest(populations);

способ, которым вы вызываете его, похож на вызов функции, которая определена внутри класса Arraylist, а не .. Ваша функция - это просто метод, который принимает массив какввод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...