Как добавить количество символов в массиве? - PullRequest
0 голосов
/ 05 мая 2018

Итак, у меня есть массив строк, и мне нужно взять количество символов в каждой строке и сложить их вместе, чтобы получить всего 1. Как бы я поступил так?

Вот массив:

public class Final21 {
   public static String getLongString(String[] array) {

      String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

   }
}

Я не добавляю индексы, но количество символов в каждой строке. Пример: у боба 3 символа, у tomtomjack 10 символов, если вы добавите их, это будет 13

Попытка:

       public static int countAllLetters(String[] array) {

      String[] names = {"bob", "maxwell", "charley", "tomtomjack"};                

         int sum = 0;
         for(String s : array)
            sum += s.length();
               return sum;

      int amountOfLetters = countAllLetters(names);
         System.out.println(amountOfLetters);

   }

выдает ошибку:

Final21.java:62: error: unreachable statement
      int amountOfLetters = countAllLetters(names);
          ^
Final21.java:65: error: missing return statement
   }
   ^
2 errors

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Для решения Java 8+ см. этот ответ от Aominè .

В комментариях вы говорите, что не можете использовать Java 8. В этом ответе представлено решение для сред, предшествующих Java 8.


Если вы хотите вернуть int, содержащий объединенное количество символов из каждого String в массиве, вам необходимо изменить тип возврата вашего метода.

public static int countAllLetters(String[] array)

Обратите внимание, как я изменил имя, чтобы лучше выразить поведение этого метода.

Чтобы реализовать это, просто переберите array и сложите вместе length() каждого String:

public static int countAllLetters(String[] array) {
    int sum = 0;
    for(String s : array)
        sum += s.length();
    return sum;
}

Это будет использоваться как:

public static void main(String[] args) {
    String[] names = { "bob", "maxwell", "charley", "tomtomjack" };
    int amountOfLetters = countAllLetters(names);

    System.out.println(amountOfLetters);
}

Итак, ваш готовый результат будет:

public class YourClass {
    public static void main(String[] args) {
        String[] names = { "bob", "maxwell", "charley", "tomtomjack" };
        int amountOfLetters = countAllLetters(names);

        System.out.println(amountOfLetters);
    }

    public static int countAllLetters(String[] array) {
        int sum = 0;
        for(String s : array)
            sum += s.length();
        return sum;
    }
}

Нажмите здесь, чтобы проверить с помощью онлайн-компилятора

Также обратите внимание, как я не объявляю массив names внутри метода. Вместо этого я объявил его вне массива, а затем передал его в метод в качестве аргумента. Это позволяет повторно использовать метод для разных массивов, а не для одного жестко заданного массива names.


Однако, если вы хотите вернуть String содержимого массива вместе (в зависимости от имени и типа возврата, который вы показываете в своем вопросе), вам нужно сохранить тип возврата вашего метода как String, и объединить элементы из массива:

public static String concat(String[] array) {
    StringBuilder builder = new StringBuilder();
    for(String s : array)
        builder.append(s);
    return builder.toString();
}
0 голосов
/ 05 мая 2018

Используя потоковый API, это можно сделать следующим образом:

 int sum = Arrays.stream(names)
                .mapToInt(String::length)
                .sum();
...