我是Java的新手,非常感谢一些帮助。 我想在这里做的是在案件之间切换。但是,我还需要不要跳过此过程中的其余案例。
我的意思是下面的代码应输出: 二 四 三 4
public class X {
public static void main(String[] args) {
String n = "two";
while(true)
{
switch (n)
{
case "zero":
{
System.out.println("zero");
n="one";
}
case "one":
{
System.out.println("one");
n="three";
}
case "two":
{
System.out.println("two");
if (12>3)
{
n="four";
break;
}
}
case "three":
{
System.out.println("three");
}
case "four":
{
System.out.println("four");
return;
}
}
}
}
}
我用return来结束while循环。现在我明白我在第二种情况下使用了break,它会破坏当前的开关,从而无法完成它。但如果我不这样做,我就不能在案件之间切换。所以,我需要一个不同的解决方案。在java中工作实现应该会有所帮助。感谢
答案 0 :(得分:0)
问题不在于switch语句。你只需要区分你来自哪里。
要做到这一点,你需要记住它,例如在局部变量中:
String lastN;
并且在切换之前的循环中:
lastN = n;
现在您可以执行以下操作:
case "four":
{
System.out.println("four");
if("three".equals(lastN))
{
return;
}
else
{
n = "three";
break;
}
}
答案 1 :(得分:0)
如果您需要的是fall through,那么您的代码正常运行 然后考虑必须首先执行零和一个的情况......
另一方面,您无需将 {} 添加到案例组
case "zero": {
System.out.println("zero");
n = "one";
}
答案 2 :(得分:0)
public static void main(String[] args) {
String n = "two";
while(true)
{
switch (n)
{
case "zero":
{
System.out.println("zero");
}
case "one":
{
System.out.println("one");
}
case "two":
{
System.out.println("two");
}
case "four":
{
System.out.println("four");
if(n=="four"){
return;
}
}
case "three":
{
System.out.println("three");
n="four";
}
}
}
}
答案 3 :(得分:0)
您可以使用Queue
。
每个案例都负责按预期执行的顺序将下一个添加到队列中。
Queue q = new LinkedList();
q.add("two");
String n = (String)q.poll();
while(n!=null)
{
switch (n)
{
case "zero":
{
System.out.println("zero");
q.add("one");
break;
}
case "one":
{
System.out.println("one");
q.add("three");
q.add("two");
break;
}
case "two":
{
System.out.println("two");
if (12>3)
{
q.add("four");
}
q.add("three");
break;
}
case "three":
{
System.out.println("three");
q.add("four");
break;
}
case "four":
{
System.out.println("four");
break;
}
}
n=(String) q.poll();
}