我的类中有一个 StringBuffer,如果 IF 语句中的条件满足,它会删除某些字符并打印该语句。然而,这可以重复多次。如果满足第二个条件,则第一个语句将打印出来,而不删除被删除的字符。
有办法解决这个问题吗?下面是我的代码。
if (status == 1 && item == item1[1]){
item1[1] = "*";
w = sb1.append(item1[1]+"["+item2[1]+"] ");
sb1.delete(1,4);
}else if (status == 1 && item == item1[2]){
item1[2] = "*";
x = sb1.append(item1[2]+"["+item2[2]+"] ");
sb1.delete(1,4);
}else if(status == 1 && item == item1[3]){
item1[3] = "*";
y = sb1.append(item1[3]+"["+item2[3]+"] ");
sb1.delete(1,4);
}
return w.toString()+x.toString()+y.toString()+z.toString();
<小时/>
我想要实现的目标如下: 我有一个 toString 它由以下部分组成:
项目1[1]+"["项目2[1]"]"+项目1[2]+"["+项目2[2]+"]"
我想这样做:
如果 item1 被标记为已采取,则会将其更改为“*”并删除 item2[1] 及其周围的 [ ],然后将其返回为:
eg: item1[2] = x
item2[2] = 1
* x[1]
( * used to be item1[1] )
但是如果循环再次通过,我当前的类会执行以下操作: *[] *[1] 我希望它是: ** 当循环完成时
最佳答案
一个常见问题:item
看起来像一个 String
,item[]
看起来像一个 String[]
。 不要对字符串使用==
,它偶尔会产生意想不到的结果。使用 equals()
代替:
if (status == 1 && item.equals(item1[1])) {
也可以将此模式用于其他条件检查。
(并为 item == null
添加一个测试/处理程序,这现在是必要的)
另一项改进:将 StringBuffer
替换为 StringBuilder
,并且在将字符串传递到追加时不要连接字符串。不是为了纠正错误,而是为了提供更好的性能:
w = sb1.append(item1[1]).append("[").append(item2[1]).append("] ");
关于java - 存储字符串缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820387/