有关从String方法返回字符串的错误

时间:2015-06-18 22:47:47

标签: java string methods

为什么我在这两种方法中都会出现错误,说这个方法必须返回类型字符串...当我返回类型字符串时。我试图在墙壁问题上做愚蠢的九九瓶啤酒,我确信每个人都学习java。但在我的书中,而不是输出数字(即99),它必须打印出单词(九十九)。所以我试着在这两种方法中将其分解,但是它说它需要返回一个字符串而它们都是。我甚至把它们都放在了括号内,但没有任何改变。

public String rounds()
{
    if(beer>89)
        return "Ninety";
    else if(beer>79)
        return "Eighty";
    else if(beer>69)
        return "Seventy";
    else if (beer>59)
        return("Sixty");
    else if (beer>49)
        return ("Fifty");
    else if (beer>39)
        return("Forty");
    else if(beer>29)
        return("Thirty");
    else if(beer>19)
        return("Twenty");
    else if(beer==19)
        return "Nineteen";
    else if(beer==18)
        return "Eighteen";
    else if (beer==17)
        return("Seventeen");
    else if (beer==16)
        return ("Sixteen");
    else if (beer==15)
        return("Fifteen");
    else if(beer==14)
        return("Fourteen");
    else if(beer==13)
        return("Thirteen");
    else if(beer==12)
        return("Twelve");
    else if(beer==11)
        return("Eleven");
    else if(beer==10)
        return("Ten");
    }

private String ones()
{
    if(beer % 10==9)
        return("-Nine");
    else if(beer % 10==8)
        return("-Eight");
    else if(beer % 10==7)
        return("-Seven");
    else if(beer % 10==6)
        return("-Six");
    else if(beer % 10==5)
        return("-Five");
    else if(beer % 10==4)
        return("-Four");
    else if(beer % 10==3)
        return("-Three");
    else if(beer % 10==2)
        return("-Two");
    else if(beer % 10==1)
        return("-One"); 
    else if(beer % 10==0)
        return("Zero");
    }

}

3 个答案:

答案 0 :(得分:1)

首先,我会为你的案例使用switch语句,就像在here中找到的那样。

要回答您的问题,错误源于这样一个事实,即当没有条件满足时您没有返回案例。如果在最终结束括号“}”之前添加带有所需输出的回报,则可以解决您的问题。

答案 1 :(得分:1)

因为您的" if-else "阻止不涵盖所有条件。想想这个方法" 轮次"如果" 啤酒"价值等于' 9 '?您必须添加" 其他"阻止和像这样;

public class TestReturn {

    public static void main(String[] args) {
        int beer = 69;
        System.out.println( beer + " : " + rounds(beer) + ones(beer));

    }

    public static String rounds(int beer) // beer must be declared either as a parameter or as a local variable
    {
        if (beer > 89)
            return "Ninety";
        else if (beer > 79)
            return "Eighty";
        else if (beer > 69)
            return "Seventy";
        else if (beer > 59)
            return ("Sixty");
        else if (beer > 49)
            return ("Fifty");
        else if (beer > 39)
            return ("Forty");
        else if (beer > 29)
            return ("Thirty");
        else if (beer > 19)
            return ("Twenty");
        else if (beer == 19)
            return "Nineteen";
        else if (beer == 18)
            return "Eighteen";
        else if (beer == 17)
            return ("Seventeen");
        else if (beer == 16)
            return ("Sixteen");
        else if (beer == 15)
            return ("Fifteen");
        else if (beer == 14)
            return ("Fourteen");
        else if (beer == 13)
            return ("Thirteen");
        else if (beer == 12)
            return ("Twelve");
        else if (beer == 11)
            return ("Eleven");
        else if (beer == 10)
            return ("Ten");
        else                        // you have to cover all conditions
            return "none";          // thus you should add these
    }

    private static String ones(int beer) // beer must be declared either as a parameter or as a local variable
    {
        if (beer % 10 == 9)
            return ("-Nine");
        else if (beer % 10 == 8)
            return ("-Eight");
        else if (beer % 10 == 7)
            return ("-Seven");
        else if (beer % 10 == 6)
            return ("-Six");
        else if (beer % 10 == 5)
            return ("-Five");
        else if (beer % 10 == 4)
            return ("-Four");
        else if (beer % 10 == 3)
            return ("-Three");
        else if (beer % 10 == 2)
            return ("-Two");
        else if (beer % 10 == 1)
            return ("-One");
        else if (beer % 10 == 0)
            return ("Zero");
        else                        // you have to cover all conditions
            return "none";          // thus you should add these
    }
}

完整的解决方案如下;

69 : Sixty-Nine

这是输出;

build.gradle

答案 2 :(得分:0)

将字符串分配给变量并返回它。在第一种情况下,可能没有满足条件,这将导致没有值返回。

这样可行:

public String rounds()
{
   String res;
   if(beer>89)
     res = "Ninety";
   // ...
   else if(beer==10)
     res = "Ten";

return res;

}