Java 该方法未按方法中假定的方式显示
我创建了一个这样的类Java 该方法未按方法中假定的方式显示,java,class,Java,Class,我创建了一个这样的类 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 =
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()));
问题是代码应该显示出来
Move m = new Move('R', 4);
System.out.println("Display " + m.convertColourtoNum(m.getColour()));
显示0
但相反,它显示了
显示器48
为什么会这样?谢谢你问题在于我们的方法ConvertColorTonum
if (colour == 'R')
index = '0';
else if (colour == 'Y')
index = '1';
else if (colour == 'G')
index = '2';
else
index = '3';
注意你是如何在数字周围使用'
。这使java认为您有一个char
,因此它实际上返回0的ASCII值并将其存储在索引中。你应该做的是
if (colour == 'R')
index = 0;
else if (colour == 'Y')
index = 1;
else if (colour == 'G')
index = 2;
else
index = 3;
这样,java意识到您需要int
数据类型,并将int
存储在index
中,您正在分配char
而不是int
。将'0'
更改为0
等。因为我输入的字符是R,所以它应该将R转换为0并打印出来。这是正确的。我现在意识到了。谢谢,所以muchIt显示48,因为这是字符0的ASCII十进制值0
是一个整数,'0'
是一个字符。