为什么我在这两种方法中都会出现错误,说这个方法必须返回类型字符串...当我返回类型字符串时。我试图在墙壁问题上做愚蠢的九九瓶啤酒,我确信每个人都学习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");
}
}
答案 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;
}