当前位置: 首页 > 知识库问答 >
问题:

如何在不中断 if 语句的情况下修复嵌套开关?

高兴贤
2023-03-14

我一直在尝试让开关语句在不嵌套的情况下工作,但它不起作用,因为它链接到我所做的if语句。

有人知道我如何在if语句仍然有效的情况下将boardType switch语句移到duration switch语句之外吗?非常感谢。

int duration = input.nextInt();

switch (duration) {
    default -> System.out.println("You have not entered a valid number of nights.");
    case 2, 7, 14 -> {
        System.out.print("How many guests are in your party? ");
        int guestAmount = input.nextInt();

        if (guestAmount >= 1 && guestAmount <= 10) {
            System.out.print("What type of board would you like (full, half, or self-catering)? ");
            String boardType = input.next();

            switch (boardType) {
                case "full", "half", "self-catering" ->
                        System.out.println("Valid details entered - booking may proceed");
                default -> System.out.println("Sorry, we do not cater that type of board.");
            }
        } else {
            System.out.println("Sorry, you are only allowed 1 to 10 guests.");

共有2个答案

施俊驰
2023-03-14

为了改进代码,可以将此逻辑提取到一个单独的方法中。

int duration = input.nextInt();
    
switch (duration) {
    default -> System.out.println("You have not entered a valid number of nights.");
    case 2, 7, 14 -> arrange(input);
}
public static void arrange(Scanner input) {
    System.out.print("How many guests are in your party? ");
    int guestAmount = input.nextInt();

    if (guestAmount >= 1 && guestAmount <= 10) {
        System.out.print("What type of board would you like (full, half, or self-catering)? ");
        String boardType = input.next();
    
        switch (boardType) {
            case "full", "half", "self-catering" -> System.out.println("Valid details entered - booking may proceed");
            default -> System.out.println("Sorry, we do not cater that type of board.");
        }
    } else {
        System.out.println("Sorry, you are only allowed 1 to 10 guests.");
    }
}

选择登机类型的逻辑也可以驻留在它自己的方法中。这样代码将更容易学习和理解。

public static void arrange(Scanner input) {
    System.out.print("How many guests are in your party? ");
    int guestAmount = input.nextInt();

    if (guestAmount >= 1 && guestAmount <= 10) {
        chooseBoardingType(input);
    } else {
        System.out.println("Sorry, you are only allowed 1 to 10 guests.");
    }
}

public static void chooseBoardingType(Scanner input) {
    System.out.print("What type of board would you like (full, half, or self-catering)? ");
    String boardType = input.next();

    switch (boardType) {
        case "full", "half", "self-catering" -> System.out.println("Valid details entered - booking may proceed");
        default -> System.out.println("Sorry, we do not cater that type of board.");
    }
}
萧霍英
2023-03-14

您也可以在没有开关语句的情况下做到这一点。如果还有的话,嵌套将很容易实现。

 类似资料:
  • 我有两个嵌套的IF语句。。 <代码>=如果($B3=$K$3,日期(年(D3)$L$3,月(D3)$M$3,天(D3)),如果($B3=$K$4,日期(年(D3)$L$4,月(D3)$M$4,天(D3)),如果($B3=$K$5,日期(年(D3)$L$5,月(D3)$M$5,天(D3)),如果($B3=$K$6,日期(年(D3)$L$6,月(D3)$M$6,天(D3)),“”) 和

  • 前面章节中,详细介绍了 3 种形式的条件语句,即 if、if else 和 if elif else,这 3 种条件语句之间可以相互嵌套。 例如,在最简单的 if 语句中嵌套 if else 语句,形式如下: if 表达式 1:     if 表示式 2:         代码块 1     else:         代码块 2 再比如,在 if else 语句中嵌套 if else 语句,形式

  • Swift 条件语句 在 Swift 语言中,你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 语法 Swift 语言中 嵌套 if 语句的语法: if boolean_expression_1 { /* 当 boolean_expression_1 表达式 true 时执行 */ if boolean_expression_2 {

  • C++ 判断 在 C++ 中,嵌套 if-else 语句是合法的,这意味着您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 语法 C++ 中 嵌套 if 语句的语法: if( boolean_expression 1) { // 当布尔表达式 1 为真时执行 if(boolean_expression 2) { // 当布尔

  • 在VB.Net中嵌套If-Then-Else语句总是合法的,这意味着你可以在另一个If ElseIf语句中使用一个If或ElseIf语句。 语法 (Syntax) 嵌套If语句的语法如下 - If( boolean_expression 1)Then 'Executes when the boolean expression 1 is true If(boolean_expressi

  • 我正在上一门Java课程,我们还没有正式学习if语句。我在学习,看到了这个问题: