繁体   English   中英

Java:从方法返回字符串

[英]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是一个字符串,但是charHealthcharManacharStamina是整数。 因此,您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM