嘿,这段代码工作正常,但很难阅读。我正在寻找一种更好的方法。
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循环中的长度调用。有没有更好的方法来做到这一点,还是只是一个草率的java语言部分。
答案 0 :(得分:2)
您拥有名称 - 值对,如果您的名称是唯一的,则应使用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());
}
}
答案 1 :(得分:0)
您可以使用新变量来保存twoDiArray.length
的值,并使用下面的新变量。
答案 2 :(得分:0)
这当然可以清理一下。其他人提到的不同方法会有更简洁的代码。你有这样的行和列,这有点奇怪。扭转订单也会使事情更清晰:
public void printArray(String[/*row*/][/*column*/] twoDiArray){
if(twoDiArray.length!=2){
System.out.println("Does not fit format standards :: 2d array :: two rows max :: first row name :: second row value");
return;
}
int len = twoDiArray[0].length;
for(int i = 0; i<len.length; i++){
//prints attribute name then value
attributeNameAndValue(twoDiArray[0][i],twoDiArray[1][i]);
}
}
另一件事是将attributeNameAndValue
更改为接受i
和twoDiArray
以及#34; neater&#34;调用
答案 3 :(得分:0)
另一种检查数组的方法
public void printArray(String[/*row*/][/*column*/] twoDiArray){
assert twoDiArray.length == 2;
for(int i=0; i<twoDiArray[0].length; i++){
attributeNameAndValue(kvp[i][0], kvp[i][1]);
}
}
答案 4 :(得分:0)
为了提高代码可读性,应用java代码约定(http://www.oracle.com/technetwork/java/codeconvtoc-136057.html)。 引入变量行和列(行数和列数)
public void printArray(String[/*row*/][/*column*/] twoDiArray) {
int rows = twoDiArray.length;
if (rows != 2) {
System.out.println("Does not fit format standards :: 2d array :: two rows max :: first row name :: second row value");
return;
}
int columns = twoDiArray[0].length;
for (int column = 0; column < columns; column++) {
//prints attribute name then value
attributeNameAndValue(twoDiArray[0][column], twoDiArray[1][column]);
}
}