如何在数组中添加字符数量?

时间:2018-05-04 23:43:32

标签: java arrays string character add

所以我有一个字符串数组,需要占用每个字符串中的字符数量并将它们加在一起得到1个字符串。我该怎么做呢?

这是数组:

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

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

   }
}

我不是添加索引,而是每个字符串中的字符数。 示例:bob有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 :(得分:7)

使用流API,可以按如下方式完成:

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

答案 1 :(得分:3)

对于Java 8+解决方案,请参阅this answer by Aominè

在评论中,您说您无法使用Java 8.此答案为Java 8之前的环境提供了解决方案。

如果要返回包含数组中每个int的字符总数的String,则需要更改方法的返回类型。

public static int countAllLetters(String[] array)

注意我是如何更改名称以更好地表达此方法的行为的。

要实现它,只需循环浏览array并将每个length()的{​​{1}}加在一起:

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);
}

Click here to test using an online compiler

另请注意我如何在方法中声明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