好的,所以我不确定如何从一堆字符串数组创建一个字符串。 我有这个方法,它接收3个字符串数组
public static String formatStory(String[] shortest, String[] medium, String[] longest){
return formattedStory;
}
我想用一个长词,一个中等单词和一个短单词并将其添加到一个字符串中,然后重复循环再重复一遍,直到字符串Arrays中没有任何单词为止。我会使用while循环,因为我不知道需要多少次迭代?或者循环?
答案 0 :(得分:0)
使用while,但请确保在每次迭代中都有3个字符串值。 这是一个非常高的内存和CPU使用功能,可能你应该考虑如何稍微确定它。
我希望有所帮助。
答案 1 :(得分:0)
您也可以使用for循环。
String s = "";
for (int i = 0; i < shortest.length; i++) {
s = s + longest[i] + medium[i] + shortest[i];
}
return s;
答案 2 :(得分:0)
它并不那么简单,我不确定只使用一个循环就可以解决它。对我而言,它需要两个函数和java等效的foreach-loop来解决任务。另外,我建议使用列表。 首先,您需要按位置对三个数组中的单词进行分组。 第二,结果字符串必须连接成一个。 请检查以下代码。
import java.util.*;
/*Some code...*/
private static void insertArrayIntoList(List<String> items, String[] array) {
if(array == null) return;
int count = 0;
for(String item : array) {
if(items.size() > count) {
String temp = items.get(count);
temp += " " + item;
items.set(count, temp);
} else {
items.add(item);
}
count++;
}
}
public static String formatStory(String[] shortest, String[] medium, String[] longest){
List<String> items = new ArrayList<String>();
insertArrayIntoList(items, shortest);
insertArrayIntoList(items, medium);
insertArrayIntoList(items, longest);
String formattedStory = "";
for(String item : items) {
formattedStory += ((formattedStory.length() == 0) ? "" : " ") + item;
}
return formattedStory;
}
答案 3 :(得分:0)
如果你不确定哪个数组是最短的,你可以先检查它,而不是在找到它之后你可以创建一个for loop
,这样你总能得到所有三个数组中值最小的值。最薄弱的环节......就像这样:
private static void doStackOverflow() {
String[] shortest = {"one", "two", "three", "four"};
String[] medium = {"a", "b", "c", "d", "e", "f"};
String[] longest = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
System.out.println(formatStory(shortest, medium, longest));
}
public static String formatStory(String[] shortest, String[] medium, String[] longest) {
int weakestLink = findWeakestLink(shortest.length, medium.length, longest.length);
String formattedStory = "";
for (int i = 0; i < weakestLink; i++) {
formattedStory += shortest[i] + " " + medium[i] + " " + longest[i] + " ";
}
return formattedStory;
}
private static int findWeakestLink(int shortest, int medium, int longest) {
int result = shortest + medium + longest;
if (shortest < result)
result = shortest;
if (medium < result)
result = medium;
if (longest < result)
result = longest;
return result;
}
答案 4 :(得分:0)
“快速而肮脏”(imo)解决方案就是:
public static String formatStory(String[] shortest, String[] medium, String[] longest) {
int s = shortest.length;
int m = medium.length;
int l = longest.length;
int max = Integer.max(s, Integer.max(m, l));
StringBuilder result = new StringBuilder();
for (int i = 0; i < max; i++) {
if (i < l)
result.append(longest[i]).append(" ");
if (i < m)
result.append(medium[i]).append(" ");
if (i < s)
result.append(shortest[i]).append(" ");
}
return result.toString().trim();
}
在所有数组中,只取最大数组的长度,循环(for
循环索引),看起来,如果数组中仍有一个元素(index < length
)并附加它。您还可以使用String
,只需将其附加到+
,如果这更适合您的风格。
答案 5 :(得分:-1)
你可以使用for循环或while循环,因为两个循环都会采用与数组长度相同的条件。只有当所有三个字符串数组具有相同大小时,一个循环才会起作用,否则您必须以不同方式编写它以优化性能。 还可以使用StringBuilder而不是串联来获得更好的内存性能。