Java 打开eclipse

Java 打开eclipse,java,Java,为什么输出为“ADC”,以及D来自何处?另外,此代码中的默认和继续命令的目标是什么 char x = 'A'; while(x != 'D') { switch(x) { case 'A': System.out.print(x); x = 'D'; case 'B': System.out.print(x); x = 'C'; case 'C': System.out.print(x); x = 'D';

为什么输出为“ADC”,以及
D
来自何处?另外,此代码中的
默认
继续
命令的目标是什么

char x = 'A';
while(x != 'D') {
    switch(x) {
    case 'A':
        System.out.print(x); x = 'D';
    case 'B':
        System.out.print(x); x = 'C';
    case 'C':
        System.out.print(x); x = 'D';
    default:
        continue;
 }

是的,您忘记了步骤之间的
break
s。因此,匹配案例之后的所有步骤都将执行。尝试以下方法:

switch (x) {
    case 'A':
         System.out.print(x);
         x = 'D';
         break;
    case 'B':
         System.out.print(x);
         x = 'C';
         break;
    case 'C':
         System.out.print(x);
         x = 'D';
         break;
}
看看这个开关:

int a = 0;
switch(a) {
case 0:
    System.out.println("0");
case 1:
    System.out.println("1");
}
执行的代码行为:

  • inta=0
  • System.out.println(“0”)
  • System.out.println(“1”)
  • 为了只执行您想要执行的语句,您必须在每种情况结束时使用
    break

    int a = 0;
    switch(a) {
    case 0:
        System.out.println("0");
        break;
    case 1:
        System.out.println("1");
        break;
    }
    

    第一次执行开关时,选择案例“A”,打印A并将x设置为“D”,
    案例之间没有中断,所以下一行执行-print D(之前x设置为'D')并将x设置为'C'。以此类推。

    你从
    A开始。因为
    x!='D'
    在循环时输入

    现在,流程如下所示:

    • 输入
      案例“A”
    • 打印
      A
      并分配
      x='D'
    • 转到案例“B”
  • 打印
    D
    (因为
    x=='D'
    )并分配
    x='C'
  • 通过
    案例“C”
  • 打印
    C
    (因为
    x=='C'
    )并分配
    x='D'
  • 转到
    默认值
    (当您找不到匹配的
    案例时,通常会达到该值)
  • 继续
    (这意味着在
  • 循环时返回到
    的开始)
    
  • 由于
    x==“D”
    该条件的计算结果为
    false
    ,因此不会进入循环

  • ==>结果:
    ADC
    已打印。

    开关语句具有所谓的内容

    您需要在每个案例结束时中断
    ,否则所有案例都将运行,就像这里发生的一样

    char x = 'A'; //starts off as A
    while(x != 'D') {
        switch(x) {
        case 'A':
            System.out.print(x); x = 'D'; //here is gets printed and changed to D
        case 'B': //you fall through here because there's no break
            System.out.print(x); x = 'C'; //print again then change to C
        case 'C': //fall through again
            System.out.print(x); x = 'D'; //print again then change to D
        default:
            continue;
    
    如果匹配,您只需输入
    案例
    (因此,如果它以C开头,则只打印一次),但一旦找到匹配,您也可以进入其他案例

    如果你添加了
    break
    s,那么你就不会再失败了

    char x = 'A';
    while(x != 'D') {
        switch(x) {
        case 'A': //match
            System.out.print(x); x = 'D'; //print then modify
            break; //break
        case 'B':
            System.out.print(x); x = 'C';
            break;
        case 'C':
            System.out.print(x); x = 'D';
            break;
        default:
            continue;
    

    因为没有
    中断读@Tunaki你说没有中断是什么意思?就像只有案例A,B和C一样,D是从哪里来的?如果开关未发现任何情况,是否意味着它默认从设置
    x=D