java在另一个字符串的特定点输入字符串时遇到问题
package num20;
import TurtleGraphics.KeyboardReader;
public class Num20main {
public static void main(String[] args) {
KeyboardReader reader = new KeyboardReader();
System.out.println("Enter String");
String sentence = reader.readLine();
StringBuilder sb = new StringBuilder(sentence);
System.out.println(sb.toString());
//String e = "egg";
for(int x = 0; x < sentence.length(); x++){
String e = "egg";
char l = sb.charAt(x);
int index = x;
if(l == ('a') || l == ('A') || l == ('e') || l == ('E') || l == ('I') || l == ('i') || l == ('O') || l == ('o') || l == ('U') || l == ('u')){
sb.insert(index, e);
System.out.println(sb.toString());
}
}
System.out.println(sb.toString());
}
}
此代码打印出:
Enter String
I Love Java
I Love Java
eggI Love Java
eggeggI Love Java
eggeggeggI Love Java
eggeggeggeggI Love Java
eggeggeggeggI Love Java
应该打印出“eggI Leggovege Jeggavegga”
# 1 楼答案
您正在字符串的开头添加。 所以现在的情况是你加上了“鸡蛋”,但是你的指数没有向前移动。 “我爱java”'I'位于索引0处。 但是当你加上一个“egg”时,我们有了“eggilovejava”。 现在‘I’在索引3,但此时x是1
最简单的方法是以相反的方式运行:
这样做,添加“鸡蛋”不会干扰您的功能
# 2 楼答案
试着这样做:
基本上,您首先执行不区分大小写的查找,然后将匹配项替换为匹配项+水果
# 3 楼答案
索引的移动速度与x相同,但每次替换都会插入3个字符,而不是1个字符
为了便于测试和控制,我采用了固定字符串,并在最后添加了示例结果: