该方法不会在方法中显示

时间:2018-04-18 00:26:32

标签: 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 == '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

为什么会这样?谢谢

1 个答案:

答案 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