猿问

java中如何将char转换为int并赋值给其他对象

当我将 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");

}


汪汪一只猫
浏览 232回答 3
3回答

慕侠2389804

首先,在执行您的代码时,该值48被分配给cell.row而不是分配给cell.col。就像那样,因为 的 ASCII 值'1',不是1,而是49:cell.row&nbsp;=&nbsp;ch[1]&nbsp;-&nbsp;1;将等于:cell.row&nbsp;=&nbsp;49&nbsp;-&nbsp;1;这清楚地表明结果49 -1将是 48。而另一个:cell.col&nbsp;=&nbsp;ch[0]&nbsp;-&nbsp;'A';它将等于:cell.col&nbsp;=&nbsp;65&nbsp;-&nbsp;65;因为 的 ASCII 值'A'是65.我真的不知道你在想什么你的代码acomplish但如果你想要“工作”,你需要更改1到'1'

慕容森

'1' 是 49 作为 int 值。如果从中减去 1,则结果将为 48。但是 'A' 为 65,并且您正在从中减去作为 int 的 'A',结果为 0。

侃侃无极

cell.row = ch[1] - 1; <--- cell.row assigned 0cell.col = ch[0] - 'A'; <--- cell.col assigned 48 but why?字符的 Ascii 值存储在 int 值中。
随时随地看视频慕课网APP

相关分类

Java
我要回答