嘿,这段代码可以正常工作,但是很难阅读。我正在寻找一种更好的方法。

public void printArray(String[/*row*/][/*column*/] twoDiArray) {
    if (twoDiArray.length == 2) {
        for (int i = 0; i < twoDiArray[0].length; i++) {
            //prints attribute name and value
            attributeNameAndValue(twoDiArray[0][i],twoDiArray[1][i]);
        }
    } else {
        System.out.println("Does not fit format standards :: 2d array :: two rows max :: first row name :: second row value");
    }
}


我严重不喜欢的部分是if语句和for循环中的length调用。有没有更好的方法可以做到这一点,或者只是Java语言的草率部分。

最佳答案

您有成对的name-value,如果您的名字是唯一的,则应改用Map<String, Integer>。否则,请创建自己的类,例如Attribute并使用List<Attribute>

public class Attribute {

    private final String name;
    private final int value;

    public Attribute(String name, int value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public int getValue() {
        return value;
    }

}


这为您提供了第二维的编译时安全性。您的代码如下所示:

public void printArray(List<Attribute> attributes) {
    for (Attribute attribute : attributes) {
        attributeNameAndValue(attribute.getName(), attribute.getValue());
    }
}

关于java - 二维数组重写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28947705/

10-12 23:58