Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中比较switch语句中的int变量?_Java_Switch Statement - Fatal编程技术网

如何在Java中比较switch语句中的int变量?

如何在Java中比较switch语句中的int变量?,java,switch-statement,Java,Switch Statement,在if语句中,您可以只使用模来检查某些内容是否可整除,例如“if(数字%3==0);” 当尝试在switch语句中执行与“case(number%3==0)”相同的操作时,它会显示required:int,provided:boolean。我如何解决这个问题?另外,如果您能简单解释一下为什么您会按照您所说的那样做,我们将不胜感激 做一个基本练习,看看输入的数字是否可以被3、5整除,两者都可以,或者两者都不能。做if语句很容易,但这一条没有那么简单 目前的代码是(和它的形式一样,因为我不知道该怎么

在if语句中,您可以只使用模来检查某些内容是否可整除,例如“if(数字%3==0);”

当尝试在switch语句中执行与“case(number%3==0)”相同的操作时,它会显示required:int,provided:boolean。我如何解决这个问题?另外,如果您能简单解释一下为什么您会按照您所说的那样做,我们将不胜感激

做一个基本练习,看看输入的数字是否可以被3、5整除,两者都可以,或者两者都不能。做if语句很容易,但这一条没有那么简单

目前的代码是(和它的形式一样,因为我不知道该怎么做)。粗体问题:

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();


    switch (number) {

        case **(number  % 3 == 0)**:
            System.out.println("Fizz");
            break;
试图解析成布尔值和一些奇怪的随机值,但我想出来的东西对我来说都不管用。

试试这个

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    switch (number  % 3) {

        case (0):
            System.out.println("Fizz");
            break;
试着这样做:

    switch (number % 3) {

    case (0):
        System.out.println("Fizz");
        break;
    }
正如MarkRotterveel已经评论的那样,在Java中可能没有办法通过Switch实现这一点。 我建议您在这里使用嵌套的IF语句。就这样,

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    if((number%3==0) && (number%5==0)) {
        System.out.println("entered number is divisible with both 3 and 5!")
    } 
    else if (number%3==0) {
        System.out.println("entered number is divisible with 3!")
    }
    else if (number%5==0) {
        System.out.println("entered number is divisible with 5!")
    }
    else if (!(number%3==0) && !(number%5==0)) {
        System.out.println("entered number is NOT divisible with 3 or 5!")
    }
}

希望这会有所帮助。

像这样使用很简单

public static void main(String[] args) {

    Scanner numberEntered = new Scanner(System.in);
    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    switch (number % 3 ) {
        case (0):
            System.out.println("Do something");
            break;
        default:
            break;
    }
}

如果您正在做FizzBuzz练习,我建议使用三元运算符

        Scanner input = new Scanner(System.in);
        while (true) {
            int n = input.nextInt();
            if (n <= 0) {
                break;
            }
            String v = n % 15 == 0 ? "FizzBuzz"
                    : n % 3 == 0 ? "Fizz"
                            : n % 5 == 0 ? "Buzz"
                                    : "Not divisible by 3 or 5";
            System.out.println(v);

        }
如果表达式为true,则返回a,否则返回b。a和b也可以是三元表达式,因此可以链接它们

在上述代码中

  • 如果它可以被15整除,那么FizzBuzz
  • 否则,如果3点之前,就会起泡
  • 否则5点前,巴斯
  • 否则不能被任何一个整除

Java中的switch无法做到这一点(至少还不能)。在switch中放入表达式(数字%3)并在case语句中放入常量(例如0),如下所示:
switch(数字%3){case(0):…
在switch之后是否可以同时绑定这两个表达式(数字%3==0和数字%5==0)(这样它就可以理解所有可能的结果了?这些结果可以被3、5整除,两者都可以,或者两者都不能,并且两者都不能返回用户输入的数字。目前类似于:switch(数字%3&&number%5){case(1):System.out.println(“Fizz”);break;case(2):System.out.println(“Buzz”);break;case(3):System.out.println(“FizzBuzz”);break;Update:这样它就不理解可被3和5整除(在(0)之后的case(1)中如何检查是否可被5整除)?O.O.但是当FizzBuzz可以被3和5整除时,我不理解它:当FizzBuzz不能被3或5整除时,它返回的是FizzBuzz,而不是我尝试过的数字。现在我很困惑代码是如何解释的,而没有任何关于它应该做什么的指示。@Jonnu对于这种情况,使用if-else是最好的选择。Switch不会给你desired结果。我尝试了此操作,但因为我将其设置为(Scanner=numberEntered和int number=numberEntered.nextln()),它不允许我在同一行或之后继续使用%而不将其定义为其他内容。但也会说“%cannot application to java.lang.string,int”。如果我不定义它,它会说“expected”如果我这样做了,就会出现上面的异常。@Jonnu请查看我编辑的答案。您需要将
扫描仪中的值分配给
n
int ret = boolean expression ? a : b.