我创建了一个类似这样的课程
public Move(char colour, int number) //a constructor takes 2 input
{
this.colour = colour;
this.number = number;
}
public static int convertColourtoNum(char colour)
{
int index = 0;
if (colour == 'R')
index = '0';
else if (colour == 'Y')
index = '1';
else if (colour == 'G')
index = '2';
else
index = '3';
return index; //return the colour in type int after being converted
}
然后在其他类我用这个方法来显示
Move m = new Move('R', 4);
System.out.println("Display " + m.convertColourtoNum(m.getColour()));
问题是代码应该显示
显示0
但相反,它会显示
显示48
为什么会这样?谢谢
答案 0 :(得分:2)
问题在于我们的方法convertColourToNum
if (colour == 'R')
index = '0';
else if (colour == 'Y')
index = '1';
else if (colour == 'G')
index = '2';
else
index = '3';
注意您是如何在数字周围使用''
的。这使得java认为你有char
,因此实际上它返回0的ASCII值并将其存储在index
中。你应该做的是
if (colour == 'R')
index = 0;
else if (colour == 'Y')
index = 1;
else if (colour == 'G')
index = 2;
else
index = 3;
这样,java意识到您需要int
数据类型,并会在int
中存储index
。