【问题标题】:error about returning a string from a String method [duplicate]关于从 String 方法返回字符串的错误 [重复]
【发布时间】:2015-06-19 06:56:27
【问题描述】:

为什么我在这两种方法中都出现错误,提示“此方法必须返回类型字符串...当我返回类型字符串时。我正在尝试在墙上做愚蠢的九十九瓶啤酒问题,我相信每个人都学过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");
    }

}

【问题讨论】:

    标签: java string methods


    【解决方案1】:

    因为您的“if-else”块并未涵盖所有条件。想想如果“beer”的值等于'9',方法“rounds”会返回什么?你必须添加一个“else”块在和喜欢这个;

        else                        // you have to cover all conditions
            return "none";          // thus you should add these
    

    完整的解决方案如下;

    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
    

    【讨论】:

    • 谢谢!这适用于这个问题。现在它正在打印出 17-7,所以现在我正在处理它。一个错误下来,一个错误去
    【解决方案2】:

    首先,我会为您的情况使用 switch 语句,就像在 here 中找到的那样。

    为了回答您的问题,错误源于您在不满足任何条件的情况下没有退货。如果您在最后的右括号“}”之前添加带有所需输出的返回,那将解决您的问题。

    【讨论】:

    • oo 我没想到。那么添加默认返回应该可以解决问题吗?
    • 如果我做一个switch语句的想法,我必须输入1-99,肯定有更简单的方法
    • 好吧,如果您要根据必须编写所有案例的数字打印出不同的字符串。否则做一个 for 循环,打印出实际的数字,并在那里做你的逻辑
    【解决方案3】:

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

    这可行:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-22
      • 2021-07-23
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      相关资源
      最近更新 更多