如何计算二维数组中的文本字段数?

时间:2016-11-18 03:13:16

标签: arrays javafx counter textfield

在这段代码中,我创建了一个包含四个文本字段的二维文本字段数组。我还提出了一个if语句,用于检查此数组是否为null。但我想计算这个数组中有多少文本字段?

@FXML private TextField f00;
@FXML private TextField f01;
@FXML private TextField f10; 
@FXML private TextField f11;

TextField txt[][] = new TextField [2][2] ; //the array of textfields 

@FXML public void cell() {  
    txt[0][0] = f00;
    txt[0][1] = f01;
    txt[1][0] = f10;
    txt[1][1] = f11;

    for (int i = 0; i<txt.length; i++) {// loop for rows
        for (int j =0; j< txt[0].length; j++) { // loop for columns
            if(!txt.equals(null)) { // if this array isn't null/ empty!
                System.out.println(txt[i][j]); // print what inside this array if the array not null
            }
        System.out.println(" ");
    }
}

2 个答案:

答案 0 :(得分:0)

要计算文本字段的数量,您可以尝试这样的事情:

int count = 0;
for (int i = 0; i < txt.length; i++) {
    for (int j = 0; j < txt[i].length; j++) {
        if (txt[i][j] != null) {
            count++
        }
    }
}
System.out.println("Number of text fields: " + count);

答案 1 :(得分:0)

您检查数组本身是否为null,而不是元素。此外,您使用equals来检查null,这会引发NullPointerException而不是返回true,因为null无法解除引用。

在java 8中,您可以使用Streams为您进行计数:

long count = Stream.of(txt).flatMap(Stream::of).filter(Objects::nonNull).count();