2016-08-23 4 views
1

In meinem Java-Programm habe ich eine lokale Stringbuffer-Variable, und ich übergebe diese Variable an eine andere Funktion.Jetzt ändern alle Änderungen in der anderen Funktion die orignal-Variable auch. Wie vermeide ich das? Bitte helfen .wie man stringbuffer konstant hält

der Code:

main() 
{ 
    ... 
    StringBuffer in=.... 
    //n is the length of in 
    for(int j=1;j<=n/2;j++) 
     if(flipandcheck(in,j)) 
     { 
      output=j+1; 
      break; 
     } 
    ... 
} 
public static boolean flipandcheck(StringBuffer str,int index) 
{ 
    int l=1; 
    if(str.charAt(index)=='(') 
     str.setCharAt(index,')'); 
    else 
     str.setCharAt(index,'('); 
    for(int i=1;i<str.length();i++) 
    { 
     if(str.charAt(i)=='(')l++; 
     else --l; 
     if(l<0)return false; 
    } 
    if(l==0)return true; 
    else return false; 
} 
+4

Übergeben Sie stattdessen eine Kopie? – Kayaman

Antwort

0

Eine Kopie des Puffers erstellen und übergeben.

Dann möchten Sie vielleicht this question überprüfen.

+0

vielen Dank, das hat funktioniert. –

1

Sie haben eine Kopie des Original-String erstellen und an die Funktion übergeben. Andernfalls übergeben Sie einen Verweis auf dasselbe StringBuffer-Objekt, sodass die in der Funktion vorgenommenen Änderungen für das lokale StringBuffer-Objekt vorgenommen werden.

Verwandte Themen