我有一个带有签名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;
}
答案 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。编译器将指示在最后返回一个值,因为所有返回都基于条件