我想指出我对Java很新,这就是我犯错误的原因。
我有一个名为“Characters”的类,它由4个变量和多个方法组成。所有变量都是私有的,所以从我读过的内容来看,我需要使用方法对它们做任何事情。
其中一个方法应该以字符串形式返回其中一个变量,但是我继续从eclipse和运行它时得到一个错误。 “此方法必须返回”String“类型的结果。错误发生在方法的第一行:
public String displayStats(String option) {
switch (option) {
case "charName":
System.out.println(charName);
return charName;
case "charHealth":
System.out.println(charHealth);
String charHealth2 = Integer.toString(charHealth);
return charHealth2;
case "charMana":
System.out.println(charMana);
String charMana2 = Integer.toString(charMana);
return charMana2;
case "charStamina":
System.out.println(charStamina);
String charStamina2 = Integer.toString(charStamina);
return charStamina2;
default:
System.out.println("Error on default");}
}
}
全班:
package basics;
public class Characters {
private String charName = "";
private int charHealth = 0;
private int charMana = 0;
private int charStamina = 0;
public void summoner(Characters player) {
player.charName = "Summoner";
player.charHealth = 80;
player.charMana = 150;
player.charStamina = 50;}
public void sentinel(Characters player) {
player.charName = "Sentinel";
player.charHealth = 200;
player.charMana = 50;
player.charStamina = 100;}
public void beserker(Characters player) {
player.charName = "Beserker";
player.charHealth = 100;
player.charMana = 0;
player.charStamina = 200;}
public void mage(Characters player) {
player.charName = "Mage";
player.charHealth = 80;
player.charMana = 200;
player.charStamina = 20;}
public String displayStats(String option) {
switch (option) {
case "charName":
System.out.println(charName);
return charName;
case "charHealth":
System.out.println(charHealth);
String charHealth2 = Integer.toString(charHealth);
return charHealth2;
case "charMana":
System.out.println(charMana);
String charMana2 = Integer.toString(charMana);
return charMana2;
case "charStamina":
System.out.println(charStamina);
String charStamina2 = Integer.toString(charStamina);
return charStamina2;
default:
System.out.println("Error on default");}
}
}
答案 0 :(得分:1)
在switch语句的默认情况下,您没有返回任何内容,这意味着该方法有可能(无论多么小)知道要返回什么。
答案 1 :(得分:0)
在displayStats
功能中,您不能在代码的所有路径中返回String
。
这是因为default
根本不会return
。
也许你想写:
default:
return "Error on default";
答案 2 :(得分:0)
两个问题:charName
是一个字符串,但charHealth
,charMana
和charStamina
是整数。因此,您的displayStats
函数并不总是返回一个字符串。
此外,switch语句中的默认选项也应返回一个字符串。
最好为每个变量创建一个访问器函数:
public String getCharName() {
return charName;
}
public int getCharHealth() {
return charHealth;
}
等
答案 3 :(得分:0)
方法displayStats必须始终返回String或抛出异常。由于代码暗示默认情况是错误,因此抛出异常。此时不是创建一个新的异常类,只抛出一个IllegalArgumentException - 新的IllegalArgumentException(选项)。打印出来时,它将说明异常的类型和无效选项的值。