如何将二维字符串数组打印为字符串
Posted
技术标签:
【中文标题】如何将二维字符串数组打印为字符串【英文标题】:How to print two dimensional array of strings as String 【发布时间】:2011-01-24 17:57:16 【问题描述】:我知道如何对一维字符串数组执行toString
方法,但是如何打印二维数组?对于 1D,我是这样做的:
public String toString()
StringBuffer result = new StringBuffer();
res = this.magnitude;
String separator = "";
if (res.length > 0)
result.append(res[0]);
for (int i=1; i<res.length; i++)
result.append(separator);
result.append(res[i]);
return result.toString();
如何打印二维数组?
【问题讨论】:
如果您在单线程环境中,通常应优先使用StringBuilder
类而不是 StringBuffer
,因为它支持所有相同的操作,但速度更快,因为它不执行任何操作同步。
【参考方案1】:
两个for
循环:
for (int i=1; i<res.length; i++)
for (int j=1; j<res[i].length; j++)
result.append(separator);
result.append(res[i][j]);
【讨论】:
【参考方案2】:您只需对元素进行两次迭代:
StringBuffer results = new StringBuffer();
String separator = ","
float[][] values = new float[50][50];
// init values
for (int i = 0; i < values.length; ++i)
result.append('[');
for (int j = 0; j < values[i].length; ++j)
if (j > 0)
result.append(values[i][j]);
else
result.append(values[i][j]).append(separator);
result.append(']');
重要提示: StringBuffer
也很有用,因为您可以链接操作,例如:buffer.append(..).append(..).append(..)
,因为它返回对 self 的引用!可用时使用语法糖。
重要提示2:因为在这种情况下,您计划将许多东西附加到StringBuffer
,因此最好估计容量以避免在附加期间多次分配和重新定位数组,您可以计算多维数组的大小乘以您计划追加的元素的平均字符长度。
【讨论】:
方法链与语法糖无关;它是 API 功能,而不是语言功能。否则,+1。 您可以使用不同步的 StringBuilder,在某些情况下可能会更快 是的,我知道。语法糖应该考虑语言的语法(语法),而这只是类的一种方法..但我没有想到其他术语,将其视为一种诗意的许可:)【参考方案3】:public static <T> String to2DString(T[][] x)
final String vSep = "\n";
final String hSep = ", ";
final StringBuilder sb = new StringBuilder();
if(x != null)
for(int i = 0; i < x.length; i++)
final T[] a = x[i];
if(i > 0)
sb.append(vSep);
if(a != null)
for(int j = 0; j < a.length; j++)
final T b = a[j];
if(j > 0)
sb.append(hSep);
sb.append(b);
return sb.toString();
【讨论】:
如果数组包含多个==
的引用,就会出现问题。例如,由于实习,它不适用于new String[][] "1", "1", "1", "1"
。在我看来,技术不好。【参考方案4】:
Arrays 类定义了几个有用的方法
Arrays.toString - 不适用于嵌套数组 Arrays.deepToString - 完全符合您的要求
String[][] aastr = "hello", "world","Goodbye", "planet";
System.out.println(Arrays.deepToString(aastr));
给予
[[hello, world], [Goodbye, planet]]
【讨论】:
【参考方案5】:public static void main(String[] args)
String array [] [] =
"*","*", "*", "*", "*", "*",
"*",
"*",
"*",
"*","*", "*", "*", "*", "*",
"*",
"*",
"*",
"*",
"*";
for (int row=0; row<array.length;row++)
for (int column = 0; column < array[row].length; column++)
System.out.print(array[row][column]);
System.out.println();
【讨论】:
以上是关于如何将二维字符串数组打印为字符串的主要内容,如果未能解决你的问题,请参考以下文章
将字符分配给在 C 中使用 malloc 声明的二维数组时收到警告