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