如何保持stringbuffer不变
how to keep stringbuffer constant
在我的 java 程序中,我有一个本地 stringbuffer 变量,我正在将该变量传递给另一个 function.Now 其他函数中的任何更改都是在修改原始变量 also.How 吗?避免这种情况?请帮忙。
代码:
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;
}
您必须创建原始 StringBuffer 的副本并将其传递给函数。否则,您将传递对同一个 StringBuffer 对象的引用,以便在函数内部所做的更改是针对本地 StringBuffer 对象进行的。
创建缓冲区的副本并传递它。
for(int j=1;j<=n/2;j++) {
if(flipandcheck(new StringBuffer(in),j)) {
output=j+1;
break;
}
}
然后,您可能想要查看 this question。
在我的 java 程序中,我有一个本地 stringbuffer 变量,我正在将该变量传递给另一个 function.Now 其他函数中的任何更改都是在修改原始变量 also.How 吗?避免这种情况?请帮忙。
代码:
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;
}
您必须创建原始 StringBuffer 的副本并将其传递给函数。否则,您将传递对同一个 StringBuffer 对象的引用,以便在函数内部所做的更改是针对本地 StringBuffer 对象进行的。
创建缓冲区的副本并传递它。
for(int j=1;j<=n/2;j++) {
if(flipandcheck(new StringBuffer(in),j)) {
output=j+1;
break;
}
}
然后,您可能想要查看 this question。