Java:将一维数组作为多维数组字符串输出
基本上,我从另一个工具获得的数据如下:Java:将一维数组作为多维数组字符串输出,java,arrays,string,format,Java,Arrays,String,Format,基本上,我从另一个工具获得的数据如下: 包含所有字符串元素的一维数组 一个整数数组,表示上述数组的维数和每个维数的大小 我需要制作一个代码,将数组作为多维数组打印到文件中 例如,我得到: Integer[] dimensions = dimensions(array);// let us consider it being {2,3} 以及一个具有6个字符串的一维数组。 {a,b,c,d,e,f} 我需要这样输出: { { a, b, c, } {
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);
}
专用字符串括号(整数[]维,字符串[]数组)
{
对于(int j=dimensions.length-1;j>=0;j--)
{
int i=0;
int k=0;
而(i
有人有更好的选择吗?一个可能的解决方案是根据内部数组的大小使用整数除法和模运算(
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;
}
您可以根据需要修改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("}");
欢迎来到堆栈溢出!不幸的是,您的问题只包含需求-它并没有显示您自己为解决此问题所做的任何努力。请添加您对此问题的尝试-因为此网站不是免费的“我们为您(家庭)工作”服务。除此之外:请转到第页了解如何/问什么。谢谢你能提供输入和结果输出吗?目前的情况是(是的我用Java生成C代码:我用Java生成C代码:是的我用Java生成C代码):const u16 nc'16 nc'16 nc_fififid fid fiu Fi提供输入和结果结果输出?你能提供输入和结果输出?你能提供输入和结果输出?当前的情况是:当前的情况是(是)是(是我(是我是我用我用我用我用我用Java代码生成的)的输入是:Cont u16 N16 nc 16 nc 16 nc'16 nc_Fiu Fififid fid fid fid fid fid fid fid fid_fid 2 2_fid 2_fid 2_fid 222_Fiu Fiduu 2222222_23_2_222322232233ID_fid_2D_3_2_0},FiMConf_FiMFID_FID_2D_3_2_1];输入是由6个字符串组成的数组:{FiMConf_FiMFID_FID_2D_3_2_0,…。请将其编辑到您的问题中,而不是在评论中发布。我认为这没有用,我需要在java中声明一个多维数组,并具有运行时确定的维度数。@SMarius如果您的意思是
[2][3]中的3
是已知的2
,我对我的答案进行了编辑。@SMarius我重新阅读了你的问题,现在我看到你有维度
{2,3}
作为输入。那样的话就容易多了。我再次编辑了我的答案,这次应该会更有帮助。是的……我的错误,但我也可以得到类似这样的输入:{2,3,4…},我不知道Integer[]维度有多少个元素。我在问题中发布的代码中发现了一些错误,不幸的是,该工具需要花费大量时间才能运行。@SMarius我还添加了一个关于以您所述格式打印它的部分。至于允许{2,3,4,…}的维度
我有点搞不清楚预期的输出会变成什么
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
}
}