问题描述
使用下面的代码我正在寻找变量的最高数量,嵌套的else if语句,不打印请帮忙看看这段代码没有执行的原因是什么
import java.util.Scanner;
public class nestedifelese {
static int A;
static int B;
static int C;
public static void main(String[] args) {
Scanner obj= new Scanner(system.in);
System.out.println("Enter the A object number :");
A=obj.nextInt();
System.out.println("Enter the B object number :");
B=obj.nextInt();
System.out.println("Enter the C object number :");
C=obj.nextInt();
System.out.println("The value of A is"+ A);
System.out.println("The value of B is"+ B);
System.out.println("The value of C is"+ C);
if(A>=B)
{
if (A>=C)
{
System.out.println("The Higgest number is" +A);
}
}
else if (B>=A)
{
if (B>=C)
{
System.out.println("The Higgest number is" +B);
}
}
else if (C>=A)
{
if (C>=B)
{
System.out.println("The Higgest number is" +C);
}
}
}
}
解决方法
至少 A>=B
和 B>=A
之一为真,因此它永远不会到达 else if (C>=A)
。如果您想使用 if-else 而不是 Math.max
函数,请将 else if
更改为 if
应该可以解决问题。
您的问题在于 if 条件。您的第二个条件 B>=A
与第一个条件 A>=B
完全相反。因此,如果第一个条件为假,那么第二个条件将始终为真,并且永远不会达到第三个条件。
您应该使用 Math.max
来过滤我们最多的其他条件,您可以像这样更改您的 if 条件:
if(A>=B && A>=C) {
System.out.println("The Higgest number is" +A);
}
if (B>=A && B>=C) {
System.out.println("The Higgest number is" +B);
}
if (C>=A && C>=B) {
System.out.println("The Higgest number is" +C);
}
,
先在 int 之前删除 static,我看不到它有任何用处。 遵循 Variables 标准,而不是 UPPER A,B,C 使用小写;
这是答案:
int highestNumber = Math.max(Math.max(a,b),c);
System.out.println("The Highest number is" +highestNumber);