我正在阅读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();
}
我做对了吗? 感谢
答案 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
的整数值为65
,Z
为90
。
因此,如果从给定参数的值中减去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时等。它给出了数组索引。