2016-08-23 4 views
1

В моей java-программе у меня есть локальная переменная stringbuffer, и я передаю эту переменную другой функции. Теперь любые изменения в другой функции также изменяют переменную orignal. Как я могу избежать этого? ,Как сохранить константу stringbuffer

код:

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

Провести копию вместо этого? – Kayaman

ответ

0

Создайте копию буфера и передайте ее.

for(int j=1;j<=n/2;j++) { 
    if(flipandcheck(new StringBuffer(in),j)) { 
      output=j+1; 
      break; 
    } 
} 

Затем, возможно, вы захотите ознакомиться с this question.

+0

спасибо большое, это сработало. –

1

Вы должны создать копию оригинального StringBuffer и передать его функции. В противном случае вы передаете ссылку на тот же объект StringBuffer, чтобы изменения, сделанные внутри функции, были сделаны против локального объекта StringBuffer.

Смежные вопросы