[英]Java: returning a string from a method
我想指出的是,我对Java还是很陌生,这就是为什么我可能会犯一些愚蠢的错误。
我有一个称为“字符”的类,它由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");}
}
}
在switch语句的默认情况下,您不会返回任何内容,这意味着该方法可能不知道返回什么(尽管很小)。
在displayStats
函数中,您不会在代码的所有路径中返回String
。
这是因为default
根本不return
。
也许你想写:
default:
return "Error on default";
两个问题: charName
是一个字符串,但是charHealth
, charMana
和charStamina
是整数。 因此,您的displayStats
函数并不总是返回字符串。
另外,switch语句中的默认选项也应返回一个字符串。
最好为每个变量创建一个访问器函数:
public String getCharName() {
return charName;
}
public int getCharHealth() {
return charHealth;
}
等等
方法displayStats必须始终返回String或引发异常。 由于代码暗示默认情况是错误,因此请引发异常。 在这一点上,而不是创建一个新的异常类,只需抛出一个IllegalArgumentException-新的IllegalArgumentException(option)。 打印出来时,它将指出异常的类型和无效选项的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.