Java 尝试将For循环与';菜单';

Java 尝试将For循环与';菜单';,java,for-loop,bluej,Java,For Loop,Bluej,初学者在这里,请尽可能解释 课程问题要求我创建菜单(完成) 菜单上有多个选项,给出不同的一次性结果(完成) 现在它希望我为、while和do…while实现一个循环(无法理解) 我真的尝试了我所有的基本知识,包括在for循环中创建和填充数组(事后看来这是一个愚蠢的想法) 正如您在评论中要求提供一个带有for的示例一样 练习的重点似乎是在菜单上迭代,直到满足退出条件(“X”.equals(input))。这意味着在for语句中的三个条件之间,这是唯一需要指定的条件。这是因为语句的(基本)的一般形式

初学者在这里,请尽可能解释

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

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

现在它希望我为、
while
do…while
实现一个
循环(无法理解)

我真的尝试了我所有的基本知识,包括在
for
循环中创建和填充数组(事后看来这是一个愚蠢的想法)


正如您在评论中要求提供一个带有
for
的示例一样

练习的重点似乎是在菜单上迭代,直到满足退出条件(
“X”.equals(input)
)。这意味着在
for
语句中的三个条件之间,这是唯一需要指定的条件。这是因为
语句的(基本)
的一般形式是

for ( [ForInit] ; [Expression] ; [ForUpdate] )
括号中的这些术语都不是强制性的,因此我们可以去掉
[ForInit]
[ForUpdate]
但保留分号)。这样做的效果是不使用
[ForInit]
初始化任何内容,并且在循环的每次迭代结束时使用
[ForUpdate]
不执行任何操作,这样我们只需检查
[Expression]
表达式给出的退出条件(当它被计算为
false
时,循环退出)

请注意,
控制台
是在循环之外声明的,因为在每次迭代中分配一个控制台是浪费的。还有
输入
,因为在
语句的条件下需要它

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;)
在功能上是等效的,您可能会疑惑为什么应该使用其中一个而不是另一个。答案是可读性。当(条件)

for循环中的所有参数都不是必需的时,执行
时,您想要执行的操作就更加清楚了。
定义stopflag并检查输入是否为“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;
      }
    }


就像start()方法一样,它是一次基本的。我应该从中汲取灵感并修改它(更改它)以与For循环兼容。共享循环的代码。是否需要实现这三个(
For
while
Do…while
)这是一种问题…我想不出来…无论我输入A、B、C或D,我都需要For循环保持活动状态,当我输入X时,我需要它退出。非常感谢!

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;
      }
    }