我的其他陈述似乎没有起作用(JAVA)

时间:2017-02-19 10:26:04

标签: java

import java.util.Scanner;
import static java.lang.System.*;

public class Whativelearned {

    enum MyfirstEnum {one, two, three}

    public static void main(String[] args) {
        Scanner keyboardinput = new Scanner(in);
        MyfirstEnum trolley;
        char a1;

        out.println("Do you pee in the shower"? Y/N");
        a1 = keyboardinput.findWithinHorizon(".", 0).charAt(0);


        if (a1=='Y'||a1=='y') {
            trolley=MyfirstEnum.one;
            out.println("Ewwwwwww");
        }


        if (a1=='N'||a1=='n') {
            trolley=MyfirstEnum.two;
            out.println("Well somebody isn't being very honest");
        }else {
            out.println("You're not so keen on following instructions, are you?");
        }

        keyboardinput.close();
    }

}

除了else案例中的案例外,我希望我的if陈述涵盖所有结果。
我希望它可以作为(!(a1=='Y'||(a1=='y'||a1=='n'||a2=='N'))

但是当我运行它时,列出else语句似乎在所有情况下都会执行。

4 个答案:

答案 0 :(得分:1)

试试这个

if (a1=='Y' || a1=='y') {
    trolley=MyfirstEnum.one;
    out.println("Ewwwwwww");
} else if (a1=='N' || a1=='n') {
    trolley = MyfirstEnum.two;
    out.println("Well somebody isn't being very honest");
} else {
    out.println("You're not so keen on following instructions, are you?");
}

答案 1 :(得分:0)

else语句始终特定于一个if语句。因此,只要不满足最后else条件,就会执行if子句。

只有在不符合任何条件的情况下才能执行您的条款,您需要将if语句更改为else if,如下所示:

if (a1 == 'y' || a1 == 'Y') {
    // ...
} else if (a1 == 'n' || 'a1 == 'N') {
    // ...
} else {
    // ....
}

解决此问题的另一种方法是使用switch语句。这些用于将变量与一组常量进行比较。您可以像这样使用它们:

switch (a1) {
    case 'y':
    case 'Y':
        // ...
        break;
    case 'n':
    case 'N':
        // ...
        break;
    default:
        // ...
}

在其他情况下尝试之前,请阅读有关switch声明的更多信息。

答案 2 :(得分:0)

只需在第二个else循环中写for

else if (a1=='N'||a1=='n') {

答案 3 :(得分:0)

干运行最能理解代码执行。

  1. 如果您在代码中执行了操作,您会发现第一个if语句已经过检查,如果是,则执行相应的过程。
  2. 现在控制向下移动以执行下一个if语句。此if语句检查与上述if互斥的os的条件。如果它是真的(仅在上面的情况为假),则执行其相应的过程,如果其为假,则执行else部分过程。
  3. 您需要使用if后跟if else,然后else