Tyring显示所有可能的顶部组合

时间:2016-06-08 20:06:04

标签: java arrays loops

  • 练习:

你正在冰淇淋店试图决定你想要什么样的冰淇淋和浇头。有很多选择!

您决定编写一个程序来帮助您列出所有可能的选择。

写一个方法

ArrayList getAllChoices(String [] flavors,String [] topping) 这需要一系列冰淇淋口味和一系列浇头作为参数,并返回一个ArrayList,其中包含冰淇淋和浇头的每种可能组合。

每个组合应以

的形式表示
"{{flavor}} with {{topping}} on top"

其中{{flavor}}是提供的冰淇淋口味,如“巧克力”,{{topping}} is a provided topping, like “sprinkles”.

例如,方法调用:

String[] flavors = {"chocolate", "vanilla"};
String[] toppings = {"sprinkles", "fudge"};
getAllChoices(flavors, toppings);

应该返回一个包含以下字符串的ArrayList:

["chocolate with sprinkles on top", "chocolate with fudge on top", "vanilla with sprinkles on top", "vanilla with fudge on top"]

我有什么:

public ArrayList<String> getAllChoices(String[] flavors, String[] toppings)
{

String[] flavors = {"chocolate", "vanilla"};
String[] toppings = {"sprinkles", "fudge"};


for(int i = 0; i < flavors.size(); i ++)
{
    for(int x = 0; x < toppings.size(); x++)
    {

    String flavorss = flavors[i];
    String toppingss = toppings[x];

    return (flavorss + " with " + toppingss + " on top");




    }
}   


}

不是很擅长这个并且不确定它为什么不起作用。

编辑:使用此解决方案。

public ArrayList<String> getAllChoices(String[] flavors, String[] toppings)
{
    ArrayList<String> retList = new ArrayList<String>();

    for(int i = 0; i < flavors.length; i ++)
    {
        for(int x = 0; x < toppings.length; x++)
        {

            String flavorss = flavors[i];
            String toppingss = toppings[x];

            // Add to list instead of returning.
            retList.add(flavorss + " with " + toppingss + " on top");
        }
    }

    return retList;
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

public ArrayList<String> getAllChoices(String[] flavors, String[] toppings)
{
    ArrayList<String> retList = new ArrayList<String>();

    for(int i = 0; i < flavors.length; i ++)
    {
        for(int x = 0; x < toppings.length; x++)
        {

            String flavorss = flavors[i];
            String toppingss = toppings[x];

            // Add to list instead of returning.
            retList.add(flavorss + " with " + toppingss + " on top");
        }
    }

    return retList;
}

您的迭代很好,但是您过早地返回列表。您的执行只会返回第一个结果。

此外,这是java语法。不是javascript。

答案 1 :(得分:0)

忽略语言和标签不匹配,错误是两个嵌套循环内部的立即返回。你应该首先在数组中收集结果,然后将其返回。

答案 2 :(得分:0)

首先是您的JavaJavaScript其他两种语言。我想你想在Java编写这个程序,你的函数应该返回ArrayList<String>,你在这里声明:

public ArrayList<String> getAllChoices(String[] flavors, String[] toppings){...}

所以你应该创建临时ArrayList并添加你创建的所有字符串,然后在循环之外你应该返回它,如果你做这样的事情(即使它工作) :

return (flavorss + " with " + toppingss + " on top");

你的函数将在嵌套循环的一次迭代后退出,其他return类型不是ArrayList<String>,它只是String

以下是解决方案的解决方法:

public ArrayList<String> getAllChoices(String[] flavors, String[] toppings) {
    ArrayList<String> tempList = new ArrayList<>();
    for (int i = 0; i < flavors.length; i++) {
        for (int x = 0; x < toppings.length; x++) {
            String temp = flavors[i] + " with " + toppings[i] + " on top";
            tempList.add(temp);
        }
    }
    return tempList;
}

PS。 size没有array方法,您应该使用length