当我将 char 转换为 int 并分配给单元格对象的不同变量时,但一个分配为 0 的值被分配为 ascii 值。class Cell { public Cell() {} public Cell(int row, int col) { this.row = row; this.col = col; } public int row; public int col;}Cell makeCell(String str) { char[] ch = str.toCharArray(); Cell cell = new Cell(); cell.row = ch[1] - 1; ** <--- cell.row assigned 0** cell.col = ch[0] - 'A'; ** <--- cell.col assigned 48 but why?** return cell;}public static void main(String arg[]){Cell cell = makeCell("A1");}
3 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
首先,在执行您的代码时,该值48
被分配给cell.row
而不是分配给cell.col
。
就像那样,因为 的 ASCII 值'1'
,不是1
,而是49
:
cell.row = ch[1] - 1;
将等于:
cell.row = 49 - 1;
这清楚地表明结果49 -1
将是 48。
而另一个:
cell.col = ch[0] - 'A';
它将等于:
cell.col = 65 - 65;
因为 的 ASCII 值'A'
是65
.
我真的不知道你在想什么你的代码acomplish但如果你想要“工作”,你需要更改1
到'1'
慕容森
TA贡献1853条经验 获得超18个赞
'1' 是 49 作为 int 值。如果从中减去 1,则结果将为 48。但是 'A' 为 65,并且您正在从中减去作为 int 的 'A',结果为 0。
侃侃无极
TA贡献2051条经验 获得超10个赞
cell.row = ch[1] - 1; <--- cell.row assigned 0
cell.col = ch[0] - 'A'; <--- cell.col assigned 48 but why?
字符的 Ascii 值存储在 int 值中。
添加回答
举报
0/150
提交
取消