2017-05-07 15 views
0

我無法確定爲什麼我的子字符串返回時總是「」。當通過單個單詞時(例如化學),我得到如下內容:奇異字子串方法

C 
h 
e 
m 
i 
s 
t 
r 
y 

然後打印一條空白行作爲子字符串值「」。

public String NextString(String lstring){ 
    String substring=""; 
    int i=0; 
    while (lstring.charAt(i)!=' ') { 
     System.out.println(lstring.charAt(i)); 
     substring.concat(Character.toString(lstring.charAt(i))); 
     i++; 
    } 
    System.out.println(substring); 
    return substring; 
} 

請幫忙!

+0

有什麼問題?它看起來像你的代碼。 –

+0

'substring = substring.concat(Character.toString(lstring.charAt(i)));' – Tdorno

回答

1

您從不重新分配連接的字符串。試試這個:

substring = substring.concat(Character.toString(lstring.charAt(i))); 

參考:Oracle Doc

+0

謝謝@Tim的編輯:) –

0

Java中的字符串是不可改變的,當你將它,你不能再改變它的價值 對於像「德文德拉Lattu說:」你需要每一次分配串聯的輸出您連接新的字符變量

substring=substring.concat(Character.toString(lstring.charAt(i))); 

,如果你不喜歡這個,你可以使用StringJoiner從Java 8 link to it它的速度更快,可變 我的第一個答案:)

+0

我對這個錯誤感到抱歉我更新了答案 –

+0

不推薦StringJoiner 。這更多的是內在的東西。改爲使用StringBuilder。 – GhostCat

0

原因,爲什麼你的子字符串是沒有得到印刷,因爲當你在做串聯你是不是在結果在循環結束是存放遺憾仍然空白。 請嘗試以下更改:

String substring=""; 
int i=0; 
while (lstring.charAt(i)!=' ') { 
    System.out.println(lstring.charAt(i)); 
    substring=substring.concat(Character.toString(lstring.charAt(i))); 
    i++; 
} 
System.out.println(substring); 
return substring; 
+0

沒有解釋...沒有upvotes。這就是大多數只有代碼的答案。 – GhostCat

0

字符串對象是不可變的。因此,concat()不會更改子字符串,但會返回更改的字符串。因此你需要

substring = substring.concat(... 

除此之外:你想迭代字符串的字符。你絕對不需要那麼複雜的循環。請使用for-each loop樣式:

for (char singleChar : lstring.getCharArray()) {