Bassicaly我从其他工具获得的数据是:
我需要创建一个代码,将数组作为多维数组打印到文件中。
例如我得到:
Integer[] dimensions = dimensions(array);// let us consider it being {2,3}
和一个带有6个字符串的一维数组
{A,B,C,d,E,F}
我需要像这样输出:
{
{
a,
b,
c,
}
{
d,
e,
f,
}
}
到目前为止,我的尝试是这样的:
private String brackets(Integer[] dimensions, String[] array)
{
for (int j = dimensions.length - 1; j >= 0; j--)
{
int i = 0;
int k = 0;
while (i < array.length - 1)
{
if (k == dimensions[j] - 1)
{
array[i] = array[i] + "}\n";
k = 0;
}
if (k == 0)
array[i] = "{\n" + array[i];
k++;
i++;
}
}
return Arrays.toString(array);
}
有人有更好的选择吗?
答案 0 :(得分:0)
一种可能的解决方案是使用整数除法和模数基于内部数组的大小(在您的情况下为3
)。例如:
private String[][] brackets(Integer[] dimensions, String[] array){
int arrayLength = array.length;
int rows = dimensions[0];
int columns = dimensions[1];
String[][] result = new String[rows][columns];
for(int i=0; i<array.length; i++){
result[i / columns][i % columns] = array[i];
}
return result;
}
循环迭代将项目放在2D索引处:
- i=0
:[i/3][i%3]
将为[0][0] = "a"
- i=1
:[i/3][i%3]
将为[0][1] = "b"
- i=2
:[i/3][i%3]
将为[0][2] = "c"
- i=3
:[i/3][i%3]
将为[1][0] = "d"
- i=4
:[i/3][i%3]
将为[1][1] = "e"
- i=5
:[i/3][i%3]
将为[1][2] = "f"
至于以您提供的格式将所有内容放在新行中,我会创建一个新方法将String-matrix转换为此输出:
private String prettyPrint(String[][] matrix){
String result = "{\n";
for(String[] array : matrix){
result += " {\n";
for(String item : array)
result += " " + item + ",\n";
result += " }\n";
}
result += "}";
return result;
}
答案 1 :(得分:0)
您可以根据需要修改Array.toString(oneDArr []): 例如:
public static String printArray(String[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "{}";
StringBuilder b = new StringBuilder();
b.append('{').append("\n");
for (int i = 0; ; i++) {
b.append(" ").append(a[i]);
if (i == iMax)
return b.append("\n").append(" }").toString();
b.append(", ").append("\n");
}
}
然后,调用它并在循环中传递一维行:
String str[][] = {{"a","b","c"},{"d","e","f"},{"g","h","i"}};
System.out.println("{");
for (int i=0; i< nrow; i++) {
System.out.println(" " + Test.printArray(str[i]));
}
System.out.println("}");
应该给:
{
{
a,
b,
c
}
{
d,
e,
f
}
{
g,
h,
i
}
}