2017-02-27 49 views
0
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()); 

} 

} 

這段代碼打印出:麻煩在另一個字符串中的特定點輸入字符串

輸入字符串

我愛的Java

我愛的Java

eggI愛的Java

eggeggI Love Java

eggeggeggI愛的Java

eggeggeggeggI愛的Java

eggeggeggeggI愛的Java

它應該打印出 「eggI Leggovegge Jeggavegga」

回答

1

你加入你的字符串開頭。 所以發生的是你添加「蛋」,但你的索引不會前進。 「我愛java」'我'是在索引0. 但是當你添加一個「雞蛋」,我們有「eggI愛java」。 現在'我'處於索引3,但此時x是1。

做到這一點最簡單的方法,是在相反的方向運行的:

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

這樣做,加入了「蛋」不會將您的功能造成干擾。

0

試試這個方法:

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

基本上,你首先做一個區分大小寫的查找,然後用火柴+「水果」取代了比賽。

0

您的索引以與x相同的速度移動,但是每個替換都會插入3,而不是1個字符。

我參加了一個固定的字符串,方便測試和易於控制添加的exepected結果到底:

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?"); 
    } 
} 
相關問題