2013-10-25 99 views
1

我一直在試圖構建一個while循環來循環字符串,當它包含我正在尋找的'模式'。該字符串是一個局部變量,在while循環之上聲明,我無法在while循環中對其進行substring,因此每個連續的循環都會查看字符串的下一部分。Java子字符串在while循環中的局部變量

我將不勝感激我怎麼能解決這個問題

這裏任何幫助的代碼;只要你有想法,onlineList通常以陣列列表輸出的形式出現,例如[阿德里安,鮑勃,好友]

   String onlineList = networkInput.nextLine(); 
       //Declare a local variable for modified online list, that will replace all the strings that contain ", " "[" and "]" 
       String modifiedOnlineList = onlineList.replaceAll("\\, ", "\n").replaceAll("\\[", "").replaceAll("\\]", ""); 
       //Loop the modifiedOnlineList string until it contains "\n" 
       while (modifiedOnlineList.contains("\n")) { 
        //A local temporary variable for the first occurence of "\n" in the modifiedOnlineList 
        int tempFirstOccurence = modifiedOnlineList.indexOf("\n"); 
        //Obtain the name of the currently looped user 
        String tempOnlineUserName = modifiedOnlineList.substring(0, tempFirstOccurence); 
        //Substring the remaining part of the string. 
        modifiedOnlineList.substring(tempFirstOccurence + 2); 
        System.out.println(modifiedOnlineList); 

       } 
+0

你告訴我們你想要你的代碼做什麼,但沒有告訴我們它在做什麼。 – Cruncher

+0

我想在最後實現的是將tempOnlineUserName添加到新的JList的組件名稱中,但這可能已經工作,但是我卡在無限循環中 – Adrian

+0

問題中某處的無限循環有所幫助。無論如何,提供的所有3個答案將解決,並修復你的無限循環 – Cruncher

回答

1

字符串是在Java

modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2); 

一成不變你要接收substring方法返回的String對象。

modifiedOnlineList.substring(tempFirstOccurence + 2); 
System.out.println(modifiedOnlineList); // still old value 

當您收到

modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2); 
System.out.println(modifiedOnlineList); // now re assigned to substring value 
1

字符串是不可改變的。這意味着substring不會修改字符串本身,但會返回一個新的字符串對象。所以,你應該使用:

modifiedOnlineList = modifiedOnlineList.substring(tempFirstOccurence + 2); 
0

modifiedOnlineList.substring()剛剛返回原始modifiedOnlineList的字符串,它不修改modifiedOnlineList。