具有奇怪不兼容性的toString方法?

时间:2014-10-04 01:53:30

标签: java string debugging

我写了一个toString方法 包含此缓冲区的字符串列表,从前到后依次排列,       用方括号括起来(“[]”)。相邻的字符串是      由字符“,”(逗号和空格)分隔。这封信      “R”应出现在左侧,表示缓冲区的后部和      字母“F”应该出现在右边,表示前面的      缓冲。例如,包含字符串“A”,“B”和“C”的缓冲区      将表示为“R [A,B,C] F”。

然后返回缓冲区的字符串表示形式。

代码如下

public String toString(){
        String s = "[";
        for(int h = 0, h <array.length, h++){
            s += array[h];
            s+= ",";
        }
        s+="]";
        return s;
    }

我在for循环中收到错误,说“;”预期并且不兼容的类型int不能转换为布尔值

1 个答案:

答案 0 :(得分:6)

for循环需要;而不是,分隔符。

更改

for(int h = 0, h <array.length, h++){

for(int h = 0; h < array.length; h++) {

所以要放在一起......

@Override
public String toString() {
   String s = "[";
   for (int h = 0; h < array.length; h++) {
      s += array[h];
      if (h != array.length - 1) {
         s += ", ";
      }
   }
   s += "]";
   return s;
}

注意,如果数组很大,或者这个toString将被大量调用,使用StringBuilder比使用String更有效,因为创建的对象更少:

@Override
public String toString() {
   StringBuilder sb = new StringBuilder("[");
   for (int h = 0; h < array.length; h++) {
      sb.append(array[h]);
      if (h != array.length - 1) {
         sb.append(", ");
      }
   }
   sb.append("]");
   return sb.toString();
}

如果不是这种情况,那么这可能是过早的优化。