使用以下代码,我正在查找变量的最高数量,嵌套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(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);