我试图在数组循环中将字符串列表中的每个字母加倍。
例如: [“ abc”,“ def”]-> [“ aabbcc”,“ ddeeff”]
ArrayList<String> aa;
aa = new ArrayList<String>();
String res = "";
for(int i=0;i<words.size();i++){
char at = aa.get(i);
res=res+at+at;
}
return res;
我还是编码新手,如您所见,我的代码很烂。感谢帮助。预先感谢
答案 0 :(得分:0)
您的实现存在一些问题:
words
数组上进行了交互,但在aa
上使用了索引。由于从未添加任何物品,因此您将获得ArrayIndexOutOfBoundsException
。return res
,但这只会返回一个字符串,而不是单词数组。根据您的示例,这可以通过以下方式完成:
public static ArrayList<String> doubleWords(ArrayList<String> input) {
ArrayList<String> result = new ArrayList<>();
for (String string : input) {
String word = "";
for (int i = 0; i < string.length(); i++) {
word += ""+string.charAt(i)+string.charAt(i);
}
result.add(word);
}
return result;
}
带有ArrayList
的{{1}}的输出将是[abc, def]
。
答案 1 :(得分:0)
您需要遍历单词列表,然后对列表中的每个单词遍历字符串中的字符,如下所示:
public ArrayList<String> doubleWords(ArrayList<String> words) {
ArrayList<String> doubledWords = new ArrayList<String>();
for (String word : words) {
String newWord = "";
for (int i=0; i<word.length(); i++) {
newWord = newWord + word.substring(i, i+1) + word.substring(i, i+1);
}
doubledWords.add(newWord);
}
return doubledWords;
}
答案 2 :(得分:0)
从Java 8开始,这还可以通过以下方式实现:
String input = "abc";
StringBuilder builder = new StringBuilder();
input.chars().forEach(value -> builder.append((char)value).append((char)value));
在附加值之前,请记住将int
的值转换回char
。
上述程序的输出:
System.out.println(builder.toString());
// aabbcc
答案 3 :(得分:0)
//response list
ArrayList<String> aa;
aa = new ArrayList<String>();
StringBuilder sb = new StringBuilder() ;
String word;
// iterate list of words
for(int i=0; i < words.size(); i++){
//get word
word = words.get(i);
//iterate each character in word
for(int j =0; j < words; j++) {
//append each char twice in StringBuilder
sb.append(word[j).append(word[j]);
}
//add word to output list
aa.add(sb.toString());
//empty StringBuilder for next word
sb.setLength(0);
}
return aa;
答案 4 :(得分:0)
只能由Java流api来完成,而没有任何临时变量:
List<String> result = listOfWords.stream().
map(value -> String.valueOf( // new result String(doubled word)
value.chars() // get chars for each original string
.mapToObj(i-> (char)i) // cast each char from int to char type
.map(c -> String.valueOf(new char[]{c, c})) // create doubled char string
.collect(Collectors.joining()))) // concatenate all doubled chars
.collect(Collectors.toList()); // collect result to list