Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用测试驱动开发在二维数组中表示该数据?_Java_Arrays - Fatal编程技术网

Java 如何使用测试驱动开发在二维数组中表示该数据?

Java 如何使用测试驱动开发在二维数组中表示该数据?,java,arrays,Java,Arrays,给定一个一维对象数组,创建以二维表示该数据的对象。也就是说,现在可以通过行和列坐标访问原始数组的每个元素 原始阵列中的数据应按行顺序排列在新实体中 这个新实体的理想尺寸是正方形。如果没有足够数量的元素组成正方形,则尺寸应尽可能“接近正方形” 输入数组可以包含任何类型的对象,包括空值 从返回的实体中,客户端应该能够确定地重建原始数组的大小和内容 这是我的密码 public String[][] oneDimension(String[] ar) { len=ar.length; m

给定一个一维对象数组,创建以二维表示该数据的对象。也就是说,现在可以通过行和列坐标访问原始数组的每个元素

原始阵列中的数据应按行顺序排列在新实体中

这个新实体的理想尺寸是正方形。如果没有足够数量的元素组成正方形,则尺寸应尽可能“接近正方形”

输入数组可以包含任何类型的对象,包括空值

从返回的实体中,客户端应该能够确定地重建原始数组的大小和内容

这是我的密码

public String[][] oneDimension(String[] ar) {
    len=ar.length;
    matrix=(int)(Math.ceil(Math.pow(len, 0.5)));
    index=0;
    String arr[][]=new String[matrix][matrix];
    for(int a=0;a<matrix;a++) {
        for (int b=0;b<matrix;b++) {
            try {
                arr[a][b]=ar[index];
                index=index+1;
            } catch (ArrayIndexOutOfBoundsException e) {
            }   
        }
    }
    return arr;
}
public String[]oneDimension(String[]ar){
len=ar.长度;
矩阵=(int)(Math.ceil(Math.pow(len,0.5));
指数=0;
字符串arr[][]=新字符串[矩阵][矩阵];
对于(int a=0;a
还有比这更短的路吗

您的代码在非异常情况下使用异常-这是一件非常糟糕的事情,出于可读性和性能等多种原因需要避免。代码不应该尝试访问元素并等待异常,而应该在访问之前检查索引是否有效

现在,您可以重写程序,使用一个循环而不是两个循环,按原始数组的索引,将其转换为索引到输出数组的
(行,列)
对:

for (int i = 0 ; i != len ; i++) {
    int row = i / matrix;
    int col = i % matrix;
    ...
}

这种方法可以帮助您避免在非异常情况下使用异常。

谢谢您的回答,但我已经用一些测试数据更新了问题,我需要它始终是平方数组。@Ravi这更简单-您只需将两个循环替换为一个,然后删除
try
/
catch
。请参阅ed信息技术