如何从java中的矩阵返回一个值

时间:2016-05-25 11:43:19

标签: java

我正在阅读java中的matrx,我在课程页面中找到了这个方法:

public int getSeatStatus(int row, char ch) { // Returns the status of the seat (row, ch)
return seats[row][(ch - ’A’)].getStatus();
 }

我不明白这个方法是如何工作的......你可以看到ch不是一个索引,为什么他们把它用作索引呢?

我们可以用另一种简单的方式重写这段代码吗? 例如,我试图像这样重写它:

public int getSeatStatus(int row, char ch){
    int col = 0;
    if (ch == 'A') {
        col=0;
    } else if (ch == 'B') {
        col=1;
    }
    return s[row][col].getStatus();

}

我做对了吗? 感谢

4 个答案:

答案 0 :(得分:2)

我不会这样做......如果你有两个'ch'对象,它可以用if语句管理,但如果你有一个100怎么办?这将意味着无法维持的if语句数量。

如果将char'A'转换为int,则值为65.通过执行 ch - 'A'你得到65 - 65与索引0相对应。 如果将char'B'转换为int,则值为66.通过执行ch - 'A',您得到的66 - 65与1相对应。

你的第一个例子实际上是一个更好的方法,即使座位被“编号”A到Z,也会有效。

答案 1 :(得分:1)

您可以将角色转换为整数。所以你也可以用它作为索引。 例如,System.out.println(0 + 'A')的输出为65。

答案 2 :(得分:1)

根据ASCII标准,字母A的整数值为65Z90

因此,如果从给定参数的值中减去A,则会得到一个值:

('B' - 'A') = (66 - 65) = 1
('F' - 'A') = (70 - 65) = 5

如果您想重写整个字母表的规则,则必须编写26个重复代码的案例。

答案 3 :(得分:1)

在Java中,char是一种数字类型。执行char - ’A’后,您将使用unicode code point进行操作。如果是'A' - 'A',则结果为0,'B' - 'A'结果为1时等。它给出了数组索引。