【发布时间】:2019-11-22 17:54:08
【问题描述】:
我有一个带有 int 签名的方法,但编译器提示我返回 char 类型的 c。
1/ 这种情况下怎么可能返回char变量
//剪刀、纸、石头在游戏逻辑类中是静态final
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;
}
【问题讨论】:
-
这点不一样!
-
不相关: 您的
while语句将始终为true(因为只有在未选择 P、R 和 S 时才会到达它)。也许您的意思是将return c;作为if语句的最后一个else? -
Unrelated 1: Java 命名约定是类名以大写字母开头,常量(
static final字段)全部大写,所以你的代码应该是return GameLogic.PAPER;。 --- Unrelated 2: 这是一个很好的代码示例,应该使用enum。您应该有一个HandShape枚举类型,其中ROCK、PAPER和SCISSOR作为枚举值,并且您的方法返回类型应该是HandShape,使用null作为最后的return语句,或者返回类型应为Optional<HandShape>,使用Optional.empty()作为最后的return语句。 -
@Zephyr 请注意你的术语。它是字符集的字符code,或者可能是index。它肯定不是指针,因为该术语有其他含义。
标签: java function methods types return