有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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”


共 (3) 个答案

  1. # 1 楼答案

    您正在字符串的开头添加。 所以现在的情况是你加上了“鸡蛋”,但是你的指数没有向前移动。 “我爱java”'I'位于索引0处。 但是当你加上一个“egg”时,我们有了“eggilovejava”。 现在‘I’在索引3,但此时x是1

    最简单的方法是以相反的方式运行:

    for(int x = sentence.length()-1 ; x <= 0 ; x ){ //The content of your for here }
    

    这样做,添加“鸡蛋”不会干扰您的功能

  2. # 2 楼答案

    试着这样做:

        String sentence = "I love Java";
        System.out.println(Arrays.stream(sentence.split(" ")).map(str -> str.replaceAll("(?i)[aeiou]", "fruit$0")).collect(Collectors.joining(" ")));
    

    基本上,您首先执行不区分大小写的查找,然后将匹配项替换为匹配项+水果

  3. # 3 楼答案

    索引的移动速度与x相同,但每次替换都会插入3个字符,而不是1个字符

    为了便于测试和控制,我采用了固定字符串,并在最后添加了示例结果:

    public class Num20 {
    
        public static void main(String[] args) {
            String sentence = "I Love Java";
            StringBuilder sb = new StringBuilder(sentence);
            System.out.println(sb.toString());
            // String e = "egg"; Good idea to declare this unchanged variable
            // here, but let us call it 'egg'. 
            String egg = "egg";
            int index = 0; // index out of loop 
            for (int x = 0; x < sentence.length(); x++){
                char l = sb.charAt (index); // sb is under constant change, 
                // we need to insert at a the place of sb, not sentence
                // hence we use the faster moving index 'index', not 'x'
    //            if (l == ('a') || l == ('A') || l == ('e') || l == ('E') || l == ('I') || l == ('i') || l == ('O') || l == ('o') || l == ('U') || l == ('u')) {
                // not wrong, but more brief:
                if ("aeiouAEIOU".indexOf (l) != -1) {
                    sb.insert (index, egg);
                    System.out.println(sb.toString());
                    // we inserted 3 characters before the vowel 
                    index +=3;
                }
                // we have to forward one (more) step for every x in sentence, too:
                ++index;
            }
            System.out.println(sb.toString());
            System.out.println("eggI Leggovegge Jeggavegga?");
        }
    }