Java:从方法返回一个字符串

时间:2016-02-09 18:07:59

标签: java string class methods return

我想指出我对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");}
    }

}

4 个答案:

答案 0 :(得分:1)

在switch语句的默认情况下,您没有返回任何内容,这意味着该方法有可能(无论多么小)知道要返回什么。

答案 1 :(得分:0)

displayStats功能中,您不能在代码的所有路径中返回String
 这是因为default根本不会return

也许你想写:

default:
    return "Error on default";

答案 2 :(得分:0)

两个问题:charName是一个字符串,但charHealthcharManacharStamina是整数。因此,您的displayStats函数并不总是返回一个字符串。

此外,switch语句中的默认选项也应返回一个字符串。

最好为每个变量创建一个访问器函数:

public String getCharName() {
    return charName;
}

public int getCharHealth() {
    return charHealth;
}

答案 3 :(得分:0)

方法displayStats必须始终返回String或抛出异常。由于代码暗示默认情况是错误,因此抛出异常。此时不是创建一个新的异常类,只抛出一个IllegalArgumentException - 新的IllegalArgumentException(选项)。打印出来时,它将说明异常的类型和无效选项的值。