无论你怎么看,我都是初学者,所以请耐心等待。该项目是在代码中有一个字符串,然后将其中的每个字母加倍,同时将感叹号增加三倍。没有其他东西加倍。它应该采取这样的方式:
快速的棕色狐狸跳过懒狗3次!
...并把它变成这个:
Tthhee qquuiicckk bbrroowwnn ffooxx jjuummppss oovveerr tthhee llaazzyy ddoogg 3 ttiimmeess !!!
这是我试过的代码,虽然它以数字打印并且需要一堆循环来完成而不是一个:
String s = "The quick brown fox jumps over the lazy dog 3 times!";
String output = "";
int i = 0;
while (i < s.length()) {
char c = s.charAt(i);
if (s.charAt(i) == '!') {
output += c + c + c;
i++;
}
if (Character.isLetter(c) == true) {
output += c + c;
i++;
} else {
i++;
}
System.out.println(output);
}
答案 0 :(得分:2)
你真的应该使用StringBuilder
,但char + char
会产生char
而非String
(它会添加数字)。您可能需要output += "" + c + c + c;
,因为它会将char
转换为String
,然后附加它们。 (同样适用于行output += c + c;
)
答案 1 :(得分:1)
干净的解决方案可能如下所示:
String s = "The quick brown fox jumps over the lazy dog 3 times!";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '!') {
sb.append(c).append(c).append(c);
} else if (Character.isLetter(c)) {
sb.append(c).append(c);
} else {
sb.append(c);
}
}
String output = sb.toString();
System.out.println(output);
它修复的问题
'!'
后会跳过该字符。您进入第一个if
,增加i
正确,但随后返回到下面的其余代码,点击下一个if
,条件为false,因为!
不是一封信,所以它会进入else
路径并再次增加i
。您应该使用continue
来防止掉线或使用强制互斥流量的if .. else if .. else
。while
循环是IMO比for
循环更难阅读。您也不必像i
那样增加3次。一旦在while
循环结束就足够了。StringBuilder
完成。它还可以附加char
而不将其转换为数字。c
一次。System.out.println(output);
但之后。这就是为什么你看到比预期更多的输出线的原因答案 2 :(得分:1)
String s = "The quick brown fox jumps over the lazy dog 3 times!";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char temp = s.charAt(i);
builder.append(temp);
if (Character.isLetter(temp)) {
builder.append(temp);
} else if (temp == '!') {
builder.append(temp).append(temp);
}
}
System.out.println("Result: " + builder.toString());
答案 3 :(得分:0)
您应该首先通过所谓的演员
将数字转换回字符like(char)output。
尝试并使用它,学习和实验是一个开始的最好的事情; - )
希望它有所帮助。
答案 4 :(得分:0)
使用StringBuilder
提供简短明了的解决方案:
String s = "The quick brown fox jumps over the lazy dog 3 times!";
StringBuilder sb = new StringBuilder();
for (int i=0 ; i<s.length() ; i++) {
String ch = s.charAt(i) + "";
sb.append(ch.matches("\\s") ? ch : ch + ch);
}
System.out.println(sb.toString());
答案 5 :(得分:0)
字符是表示实际英文字符的数字。添加两个字符将只为您提供一个新数字,该数字将代表一些新字符。
使用StringBuilder课程来完成您的工作。
答案 6 :(得分:0)
这段代码对我来说很好......
String s = "The quick brown fox jumps over the lazy dog 3 times!";
String output = "";
int n = s.length();
for(int i = 0; i<n; i++){
String sub = s.substring(i, i+1);
output = output + sub + sub;
}
System.out.println(output);
答案 7 :(得分:0)
而不是打印字符串我认为你正在做的是打印与每个字符相加的数字。
在您的串联中添加""
,即output+= "" + c + c;
但是请确保在添加字符之前添加空字符串,否则它会将字符添加到一起,为您提供一个数字,然后将其转换为字符串。
此外,在您的其他声明中,您可能需要添加output+= c
行,否则您将失去3号和空格。