所以我有一个字符串数组,需要占用每个字符串中的字符数量并将它们加在一起得到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
答案 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