2013-09-29 40 views
-1

我正在做一個有幾個獨立部分的類分配,除了這個之外,我已經完成了這些任務。我需要從用戶獲取一個字符串輸入,並創建一個循環(最好是for循環),在每個字符之間插入星號。我完全沉迷於這一個,所以如果有人可以給我一些幫助,開始它將不勝感激。Java - For Loop在用戶輸入的字符串的字符之間插入星號

我來到了這個迄今爲止

} else if (choice.equalsIgnoreCase("C")) { 
     System.out.print("Enter text here: "); 
     String orig = input.nextLine(); 

     // To use for asterisk insertion 
     int x = 1; 
     int y = 2; 

     for (int length = orig.length(); length > 0;) { 
      orig = orig.substring(0,x) + "*" + orig.substring(y); 
      x = x + 2; 
      y = y + 2; 
     } 

    } 

它編譯就好了,但是當我測試,並輸入一些文字它 異常出現在線程「主要」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:5

+0

而不是使用子的,它會更容易,直觀,高效簡單地通過附加原始字符串後跟一個星號(除了最後一個)到一個StringBuilder的每個字符重新創建一個新的字符串。您當然也可以在除第一個字符之外的每個字符前加上一個星號。 –

+0

唯一的問題可能是我們還沒有學會如何使用StringBuilder,所以我不確定我是否應該使用該方法。此外,示例輸出將第一個星號後的第一個星號和最後一個字符後的最後一個星號放在一起。即; h *我* – user2827341

+0

我想我收到的錯誤,我只需要找到一種方法來告訴循環何時停止做這個過程,因爲它將要結束,然後搞砸了? – user2827341

回答

0

除非必須,否則不要重複使用變量。它只會使代碼更復雜,難以閱讀。

String orig = "my test"; 
    StringBuilder result = new StringBuilder(); 

    for (int i = 0; i < orig.length() -1;i++) { 
     result.append(orig.charAt(i)); 
     result.append('*'); 
    } 
    result.append(orig.charAt(orig.length()-1)); 
0

您的for循環沒有有效的終止子句。

for (int length = orig.length(); length > 0;) 

將無限期地運行,直到它導致異常。在 - 「1個」 for循環

System.out.print("Enter text here: "); 
    String orig = input.nextLine(); 

    for (int length = orig.length() - 1; length > 0; length--) { 
     orig = orig.substring(0,length) + "*" + orig.substring(length); 
    } 

如果你想最終的「T」比你可以輕鬆地添加,通過消除後的*可生產

Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t 

0

試試這個程序在字符串的每個字符之間添加星號。

int leng; 
Scanner sc= new Scanner(System.in); 
System.out.println("enter the name"); 
String name=sc.nextLine(); 
leng=name.length(); 
char c[]=new char[leng]; 
for(int i=0;i<=leng-1;i++){ 
    c[i]=name.charAt(i); 

    System.out.print(c[i]); 
    if(i<leng-1) 
     System.out.print("*"); 
}