Java 如果输入变为默认值,如何返回到switch语句的顶部?

Java 如果输入变为默认值,如何返回到switch语句的顶部?,java,switch-statement,Java,Switch Statement,我在做作业(从1-10的数字输入中生成罗马数字),在做作业的过程中,我做了一个switch语句。我的问题是,如果案例中没有选择任何输入,如何返回到switch语句的顶部?我们的教科书中没有这方面的内容,我在java文档中也找不到任何内容。这仅仅是不可能发生的事情吗?您可以在case中中断,或者可以编写返回语句(如果是方法) public int method(int i){ int j=0; switch(i){ case 1: ... return j;

我在做作业(从1-10的数字输入中生成罗马数字),在做作业的过程中,我做了一个switch语句。我的问题是,如果案例中没有选择任何输入,如何返回到switch语句的顶部?我们的教科书中没有这方面的内容,我在java文档中也找不到任何内容。这仅仅是不可能发生的事情吗?

您可以在case中
中断
,或者可以编写
返回
语句(如果是方法)

public int method(int i){
    int j=0;
    switch(i){
        case 1: ... return j;
        ....
    }
}

您可以在case中
中断
,也可以编写
返回
语句(如果是方法)

public int method(int i){
    int j=0;
    switch(i){
        case 1: ... return j;
        ....
    }
}

下面是如何做到这一点,但我强烈建议您重新构造代码以避免这样做

public class Main {
    public static void main(String[] args) {
        int i = 0;
        loop: for (;;) {
            switch (i) {
                case 1: System.out.println(i);
                    break loop;
                case 2: // more stuff
                    break loop;
                default:
                    System.out.println(i);
                    i = 1;
                    break;
            }
        }
    }
}

下面是如何做到这一点,但我强烈建议您重新构造代码以避免这样做

public class Main {
    public static void main(String[] args) {
        int i = 0;
        loop: for (;;) {
            switch (i) {
                case 1: System.out.println(i);
                    break loop;
                case 2: // more stuff
                    break loop;
                default:
                    System.out.println(i);
                    i = 1;
                    break;
            }
        }
    }
}

就我个人而言,我更喜欢while循环:

只是为了解释基本思想:初始化一个布尔值,它将作为是否必须重复循环的标准,启动while循环并将布尔值设置为false,因为在大多数情况下,您只想运行一次,启动开关,并且在所有要重复循环的情况下,将布尔值再次设置为true

boolean again= true;
while (again){
again= false;

switch(number){
case 1:
break;
case 2:
break;
default: again=true;
break;
}
}

就我个人而言,我更喜欢while循环:

只是为了解释基本思想:初始化一个布尔值,它将作为是否必须重复循环的标准,启动while循环并将布尔值设置为false,因为在大多数情况下,您只想运行一次,启动开关,并且在所有要重复循环的情况下,将布尔值再次设置为true

boolean again= true;
while (again){
again= false;

switch(number){
case 1:
break;
case 2:
break;
default: again=true;
break;
}
}

是的,这是不可能发生的事情。它只测试一次值(除非您将其放入循环中),然后转到
开关
语句后面的任何代码。您说的“开关顶部”是什么意思?你的意思是
案例1:
?为什么要用相同的数据和相同的条件再次测试数据?是的,这是不可能发生的事情。它只测试一次值(除非您将其放入循环中),然后转到
开关
语句后面的任何代码。您说的“开关顶部”是什么意思?您的意思是
案例1:
?为什么要用相同的数据和相同的条件再次测试数据?