Как подсчитать строки, добавленные в массив списка, используя метод sub sub и целевую строку в Java? - PullRequest
0 голосов
/ 20 сентября 2018
public class Remove {
    public static void main(String[] args) {
        ArrayList < String > y = new ArrayList < > ();
        y.add("Go");
        y.add("Home");
        y.add("Go");
        y.add("Home");
        System.out.println(y);
        countOccurence("Go", y);
        System.out.println(y);
    }
    public static int countOccurence(String y, ArrayList < String > t) {
        int count = 0;
        for (int i = 0; i <= t.size(); i++) {
            if (y.equalsIgnoreCase(t.get(i))) {
                count++;
            }
        }
        return count;
    }
}

Этот код не позволяет мне печатать счетчик, возвращенный под-методом countOccurence.этот код должен подсчитывать количество раз, когда целевая строка появляется в массиве Y, а затем возвращать ее главной, чтобы ее можно было распечатать.Что я могу сделать, чтобы решить эту проблему?

Ответы [ 4 ]

0 голосов
/ 20 сентября 2018

Чтобы напечатать вхождение:

System.out.println("Occurence of 'Go' is " + countOccurence("Go", y)); 

Вы также должны удалить изменение i <= t.size(); на i < t.size();, чтобы избежать ошибки IndexOutOfBounds.

public static void main(String[] args) {
    ArrayList<String> y = new ArrayList<>();
    y.add("Go");
    y.add("Home");
    y.add("Go");
    y.add("Home");
    System.out.println(y);
    System.out.println("Occurence of 'Go' is " + countOccurence("Go", y));
}

public static int countOccurence(String y, ArrayList<String> t) {
    int count = 0;
    for (int i = 0; i < t.size(); i++) {
        if (y.equalsIgnoreCase(t.get(i))) {
            count++;
        }
    }
    return count;
}
0 голосов
/ 20 сентября 2018

Вы можете позвонить напрямую

System.out.println(countOccurrence("Go", y));

Правильный код будет:

import java.util.ArrayList;

public class Remove {
    public static void main(String[] args) {
        ArrayList < String > y = new ArrayList < > ();
        y.add("Go");
        y.add("Home");
        y.add("Go");
        y.add("Home");
        System.out.println(y);
        System.out.println(countOccurence("Go", y));
    }
    public static int countOccurence(String y, ArrayList < String > t) {
        int count = 0;
        for (int i = 0; i < t.size(); i++) {
            if (y.equalsIgnoreCase(t.get(i))) {
                count++;
            }
        }
        return count;
    }
}

Или, если вы хотите повторно использовать значение, просто сохраните его в переменной, как предложеноСне

0 голосов
/ 20 сентября 2018

Просто дополнительное решение. В Java8 вы можете сделать это с помощью Stream API для подсчета случаев.

Map<String, Long> counts =
        listOfString.stream().collect(
                Collectors.groupingBy(
                        Function.identity(), Collectors.counting()));

И код результата;

public class Remove {
    public static void main(String[] args) {
        ArrayList< String > listOfString = new ArrayList < > ();
        listOfString.add("Go");
        listOfString.add("Home");
        listOfString.add("Go");
        listOfString.add("Home");

        Map<String, Long> counts =
                listOfString.stream().collect(
                        Collectors.groupingBy(
                                Function.identity(), Collectors.counting()));

        System.out.println(counts.get("Go"));
        System.out.println(counts.get("Home"));
    }
}
0 голосов
/ 20 сентября 2018

Это потому, что вы печатаете список, а не результат вашего countOccurence метода.Чтобы исправить это -

Сохраните результат countOccurence в переменной

int count = countOccurence("Go", y);

Распечатайте счет в следующей строке.

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