一个int方法如何返回char

时间:2019-07-13 03:15:03

标签: java function methods types return

我有一个带有签名int的方法,但是编译器提示我返回char类型的c。

1 /在这种情况下如何返回char变量

// scissors,纸,石头在gamelogic类中是静态最终的

public int getInput(){  
    String choice;
    char c;
    do {
        System.out.println("Make a choice");
        choice  = sc.nextLine().toUpperCase();
        c = choice.charAt(0);

        if(c == 'P'){
            return gameLogic.paper;
        }else if(c == 'R'){
            return gameLogic.rock;
        }else if(c== 'S'){
            return gameLogic.scissor;
        }
    }while(c != 'S' && c != 'R' && c != 'P');
    return c;
}

3 个答案:

答案 0 :(得分:1)

char实际上只是一个无符号的16位整数。 int是32位整数。因此,每个char值都将适合int,而不会丢失任何信息。

这被称为扩大基元转换。来自the Java Language Specification

  

char到整数T的加宽转换将char值的表示形式零扩展以填充更宽的格式。

在您的情况下,“积分类型T”为int

答案 1 :(得分:-1)

return c;更改为return Character.getNumericValue(c);

public int getInput(){  
    String choice;
    char c;
    do {
        System.out.println("Make a choice");
        choice  = sc.nextLine().toUpperCase();
        c = choice.charAt(0);

        if(c == 'P'){
            return gameLogic.paper;
        }else if(c == 'R'){
            return gameLogic.rock;
        }else if(c== 'S'){
            return gameLogic.scissor;
        }
    }while(c != 'S' && c != 'R' && c != 'P');
    return Character.getNumericValue(c);
}

答案 2 :(得分:-1)

您可以返回char值,它将被java自动转换为int。编译器将指示在最后返回一个值,因为所有返回都基于条件