Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:仅当选择了右菜单项时,才通过arraylist继续迭代_Java_Loops_Arraylist_Console Application - Fatal编程技术网

Java:仅当选择了右菜单项时,才通过arraylist继续迭代

Java:仅当选择了右菜单项时,才通过arraylist继续迭代,java,loops,arraylist,console-application,Java,Loops,Arraylist,Console Application,我正在尝试创建一个控制台应用程序,每次选择正确的菜单项时,它都会遍历一列美食创意。问题是,我似乎无法在每次选择正确的菜单项时继续迭代,它只是重新启动循环 Scanner in = new Scanner(System.in); ArrayList<String> meals = new ArrayList<String>(); meals.add("pasta"); meals.add("potatoes"); meals.add("pork"); String sele

我正在尝试创建一个控制台应用程序,每次选择正确的菜单项时,它都会遍历一列美食创意。问题是,我似乎无法在每次选择正确的菜单项时继续迭代,它只是重新启动循环

Scanner in = new Scanner(System.in);
ArrayList<String> meals = new ArrayList<String>();
meals.add("pasta");
meals.add("potatoes");
meals.add("pork");
String select = "";    

while(!select.equals("q")){
    System.out.println("What would you like to do?");
    System.out.println("\t 1. See next suggestion.");
    System.out.println("\t 2. <Another option>");
    System.out.println("\t 3. <Another option>");
    select = in.next();

    switch(select){
        case "1":
            //Here's where the problem is:
            int nextIdea = 0;
            while(){
                System.out.println("\tToday: " + meals.get(nextIdea));
                nextIdea++;
                break;
            }
            System.in.read();
            break;
    }

}
Scanner-in=新的扫描仪(System.in);
ArrayList=新建ArrayList();
膳食。添加(“意大利面”);
食物。添加(“土豆”);
膳食。添加(“猪肉”);
字符串select=“”;
而(!select.equals(“q”)){
System.out.println(“您想做什么?”);
System.out.println(“\t 1.见下一建议”);
System.out.println(“\t2”);
System.out.println(“\t3”);
select=in.next();
开关(选择){
案例“1”:
//问题就在这里:
int-nextIdea=0;
while(){
System.out.println(“\tToday:+fines.get(nextIdea));
nextIdea++;
打破
}
System.in.read();
打破
}
}
用户选择显示每日选择后,应显示列表中的第一项,然后返回“您想做什么”菜单,然后用户下次选择菜单中的选项1时,应显示菜单中的下一项,但会重新启动循环。我理解这是因为每次循环执行之前计数器变量(“nextIdea”)都设置为零,但如何让它记住上次使用的arrayList索引号,然后在用户下次选择查看每日膳食时使用该索引号。只有在浏览完列表中的所有项目后,列表才应重置为0


任何帮助都将不胜感激,谢谢

首先,在while循环之外实例化nextIdea,如您所述

然后,包含一个简单的if语句,用于检查nextIdea是否已到达末尾,如下所示:

while(true)
{
    if (nextIdea < meals.size())
    {
        System.out.println("\tToday: " + meals.get(nextIdea));
        nextIdea++;
    }

    else
    {
       nextIdea = 0;
    }

    break;
}
while(true)
{
if(nextIdea
您在while循环中没有条件,所以我假设您的意思是“true”,这意味着它将无限运行,直到中断

虽然从技术上讲,这里的循环并没有真正起到任何作用,因为它只运行了一次,然后就爆发了,所以您可以像这样摆脱它:

if (nextIdea < meals.size())
{
    System.out.println("\tToday: " + meals.get(nextIdea));
    nextIdea++;
}

else
{
   nextIdea = 0;
}
if(nextIdea
我认为你需要仔细考虑你真正想要实现的目标,以及实现这一目标的最佳方式是什么


请随意提问。

首先,在while循环之外实例化nextIdea,如您所述

然后,包含一个简单的if语句,用于检查nextIdea是否已到达末尾,如下所示:

while(true)
{
    if (nextIdea < meals.size())
    {
        System.out.println("\tToday: " + meals.get(nextIdea));
        nextIdea++;
    }

    else
    {
       nextIdea = 0;
    }

    break;
}
while(true)
{
if(nextIdea
您在while循环中没有条件,所以我假设您的意思是“true”,这意味着它将无限运行,直到中断

虽然从技术上讲,这里的循环并没有真正起到任何作用,因为它只运行了一次,然后就爆发了,所以您可以像这样摆脱它:

if (nextIdea < meals.size())
{
    System.out.println("\tToday: " + meals.get(nextIdea));
    nextIdea++;
}

else
{
   nextIdea = 0;
}
if(nextIdea
我认为你需要仔细考虑你真正想要实现的目标,以及实现这一目标的最佳方式是什么


请随意提问。

您需要将nextIdea索引移出第一个循环。当用户选择“查看下一个建议”时,您也不必重复列表-您只需显示下一个想法:

int nextIdea = 0;
while(!select.equals("q")){
    System.out.println("What would you like to do?");
    System.out.println("\t 1. See next suggestion.");
    System.out.println("\t 2. <Another option>");
    System.out.println("\t 3. <Another option>");
    select = in.next();

    switch(select){
        case "1":
            System.out.println("\tToday: " + meals.get(nextIdea));
            nextIdea++;
            System.in.read();
            break;
    }
}

您需要将nextIdea索引移出第一个循环。当用户选择“查看下一个建议”时,您也不必重复列表-您只需显示下一个想法:

int nextIdea = 0;
while(!select.equals("q")){
    System.out.println("What would you like to do?");
    System.out.println("\t 1. See next suggestion.");
    System.out.println("\t 2. <Another option>");
    System.out.println("\t 3. <Another option>");
    select = in.next();

    switch(select){
        case "1":
            System.out.println("\tToday: " + meals.get(nextIdea));
            nextIdea++;
            System.in.read();
            break;
    }
}

while()->while中的条件是什么。语法错误?while()->while中的条件是什么。语法错误?谢谢!!这是一个很容易解决的问题,我从来没有想过。非常感谢。谢谢!!这是一个很容易解决的问题,我从来没有想过。非常感谢你。