尝试使用带有“菜单”的循环

时间:2019-05-16 06:47:24

标签: java for-loop bluej

此处的初学者,请尽可能多地进行说明!

一个课程问题要求我创建一个菜单(完成)。

菜单上具有多个选项可以给出不同的一次性结果(完成)。

现在它希望我实现一个@EnableMongoRepositoriesforwhile循环(不能理解)

我确实尝试了所有基本知识,包括在do...while循环内创建和填充数组(事后看来这是一个愚蠢的主意)。

for

2 个答案:

答案 0 :(得分:1)

您要求在注释中添加for的示例。

练习的目的似乎是在菜单上进行迭代,直到满足退出条件为止("X".equals(input))。这意味着除了在for语句中的三个条件之间,这是您需要指定的唯一条件。这是因为for语句的一般形式是

for ( [ForInit] ; [Expression] ; [ForUpdate] )

括号中的所有术语都不是强制性的,因此我们也可以摆脱[ForInit][ForUpdate]但保留分号)。这具有以下效果:不使用[ForInit]初始化任何内容,并且在循环[ForUpdate]的每次迭代结束时不执行任何操作,只剩下检查{{1}给出的退出条件}表达式(当评估为[Expression]时,循环退出)。

请注意,false是在循环外部声明的,因为在每次迭代中分配一个会很浪费。还有console,因为您需要input语句的条件。

for

您可能会注意到这有点尴尬,因为这不是您通常使用Scanner console = new Scanner(System.in); String input = ""; for (;!"X".equals(input);) { // notice, the first and last part of the for loop are absent displayMenu(); input = console.nextLine().toUpperCase(); System.out.println(); switch (input) { case "A": System.out.println("Option #A was selected"); break; case "B": System.out.println("Option #B was selected"); break; case "C": System.out.println("Option #C was selected"); break; case "D": System.out.println("Option #D was selected"); break; case "X": System.out.println("You chose to Exit"); break; default: System.out.println("Invalid selection made"); break; } } 循环的原因。

无论如何,此时for版本变得很简单(while),在这种情况下,while (!"X".equals(input))也等效为(do...while)相同的条件在当前循环的末尾和下一个循环的开始均适用,并且它们之间没有副作用。

顺便说一句,您可能会注意到do { ... } while (!"X".equals(input))while (condition)在功能上是等效的,并且您可能会迷惑为什么应该使用一个而不是另一个。答案是可读性。做for (; condition ;)时,您想做什么就更清楚了。

答案 1 :(得分:0)

for循环中的所有参数不是强制性的。 定义一个停止标志并检查输入是否为“ X”。 只要输入为“ X”,只需更改stopFlag或简单地使用break语句就可以中断循环;


public void startFor()
    {
      boolean stopFlag = false;

      for(; stopFlag == false ;) {

        displayMenu();
        Scanner console = new Scanner(System.in);
        String input = console.nextLine().toUpperCase();
        System.out.println();

        switch (input)
        {
            case "A": System.out.println("Option #A was selected"); break;
            case "B": System.out.println("Option #B was selected"); break;
            case "C": System.out.println("Option #C was selected"); break;
            case "D": System.out.println("Option #D was selected"); break;
            case "X": System.out.println("You chose to Exit"); break;
            default: System.out.println("Invalid selection made"); break;
        }
        if(input.contentEquals("X"))
            stopFlag = true;
      }
    }