Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 该方法未按方法中假定的方式显示_Java_Class - Fatal编程技术网

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'
是一个字符。