使用char[]数组有效重写tostring

wn9m85ua  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(387)

这个问题在这里已经有答案了

java:用分隔符连接基元数组(9个答案)
打印java数组最简单的方法是什么(32个答案)
上个月关门了。
我正在创建一个具有 char[] 数组作为唯一的示例变量。我必须使用构造函数和accesor方法等,但困难的部分是创建一个有效的 toString() 方法。
现在,我已将数组初始化为: private char[] tune = new char[5]; 我的tostring()方法如下所示:

public String toString() {
        return notes[0] + " " + notes[1] + " " + notes[2] + " " + notes[3] + " " + notes[4];
    }

我的问题是:有没有更有效的打印方法。我考虑使用for循环,如下所示:

for(int i = 0; i <= tune.length; i++) {
            return tune[i] + " ";
        }

但我假设它会返回调子[0]并停止。

mqxuamgl

mqxuamgl1#

如果你想覆盖 toString() 方法,使用 StringBuilder 在循环外初始化。

public String toString() {
  StringBuilder sb = new StringBuilder();
  for (char ch : array) { // you used both notes and tune arrays in your examples,
  // so I'm just going to use "array" as the variable name as an example
    sb.append(ch);
    sb.append(" ");
  }
  return sb.toString();
}

请注意,这将在结尾处产生额外的空间,如果不需要,请改用此选项:

public String toString() {
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < array.length - 1; i++) { // adds a space after every element
  // except for the last one, hence "i < array.length - 1"
    sb.append(array[i] + " ");
  }
  sb.append(array[array.length - 1]); // adds only the last element and no space
  // after
  return sb.toString();
}

希望这是容易理解的!
注意-java已经可以转换 char[] 但我想你想改变它的方式。

tf7tbtn2

tf7tbtn22#

数组已经有了打印整个数组的内置方法(而不是ArrayList)。
如果在文档中查找数组,可以看到有一个函数 Arrays.toString() 下面是一个如何使用它的示例。string[]array=新字符串[]{“a”,“b”,“c”};

// Print out the Array
System.out.println(Arrays.toString(array));

// Output
[a,b,c]

如果要打印从索引a到索引b的数组,则使用 for... 循环会更好。

相关问题