【问题标题】:Transfer flow from for loop to switch case将流程从 for 循环转移到 switch case
【发布时间】:2018-10-04 12:12:45
【问题描述】:

请有人向我解释如何在我的代码中将控制流从 for 循环转移到 switch case

for (int i = 0; i < 3; i++) {
    String answer;
    System.out.println("Are You Sure ?");
    answer = input.next();

    if (answer.equals("y")) {
        break OUTER;
    }

}

switch(operator) {
case "add":
    result = num1 + num2;
    System.out.printf("%d + %d is equal to %d", num1, num2, result);
    break;
case "subtract":
    result = num2 - num1;
    System.out.printf("%d - %d is equal to %d", num1, num2, result);
    break;
case "multiply":
    result = num2 * num1;
    System.out.printf("%d x %d is equal to %d", num1, num2, result);
    break;  
case "divide":
    result = num2 / num1;
    System.out.printf("%d / %d is equal to %d", num1, num2, result);
    break;    
}

【问题讨论】:

  • 你当前的 switch 语句有什么问题?
  • 只需将 switch 关键字中的所有行放在注释的 else 块中
  • 转移控制流是什么意思?究竟是什么问题?
  • 忽略OUTER开关将在if (answer.equals("y"))执行,否则当i &lt; 3为假时。

标签: java for-loop switch-statement


【解决方案1】:

For 循环有一个条件表达式,您已经在尝试三次后使用它来退出。您可以修改表达式以将答案考虑在内。像这样的:

String answer = "";

for (int i = 0; i < 3 || !answer.equals("y"); i++) {
    System.out.println("Are You Sure ?");
    answer = input.next();
}

【讨论】:

    【解决方案2】:

    请参考如何在java中使用标签,基本上你的标签必须在你的声明范围内 link

    根据您的代码,我假设您只想退出 for 循环。所以你可以在下面做

    OUTER:  for (int i = 0; i < 3; i++) {
        String answer;
        System.out.println("Are You Sure ?");
        answer = "y";
    
        if (answer.equals("y")) {
            break OUTER;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      相关资源
      最近更新 更多