微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用大于、小于和等于的Java显示3个数值

如何解决用大于、小于和等于的Java显示3个数值

我试图在这代码显示 3 个不同的值,最高的数字,最低的数字,如果所有的数字都相同,输出应该表明它们是相等的,到目前为止我只能显示更大的或者相等的值,但是不知道怎么实现较小值的显示,请问这个结构是帮我实现还是应该使用其他类型的结构?

    import java.util.Scanner;

public class values

{
    public static void main(String[] args) 

    {
        int x,y,z;

        Scanner s = new Scanner(system.in);

        System.out.print("First Value:");

        x = s.nextInt();

        System.out.print("Second Value:");

        y = s.nextInt();

        System.out.print("Third Value:");

        z = s.nextInt();

        if (x == y && x == z)
    {
        System.out.println("All numbers are equal");
        
    }
        else if(y > z && y > x)

        {
            System.out.println("The highest value is: "+y);

        }
        else if(x > y && x > z)

        {
            System.out.println("The highest value is: "+x);
        }
        else

        {
            System.out.println("The highest value is: "+z);
        }
    }
}

解决方法

编写涉及所有三个变量的所有条件可能会很麻烦。我将按以下步骤进行:

  1. 初始化单独的变量以分别存储最高值和最低值。例如int highest = x; int lowest = x;
  2. 分别用 yz 比较当前最高和当前最低,必要时进行更改。例如highest = y > highest : y ? highest; lowest = y < lowest ? y : lowest;
  3. 完成所有比较后,如果最大值与最小值相同,则所有 xyz 都相同。
,
    if (x == y && x == z) {
        System.out.println("All numbers are equal");
    } else {
        System.out.println("The highest value is: "+ IntStream.of(x,y,z).max().getAsInt());
        System.out.println("The lowest value is: "+ IntStream.of(x,z).min().getAsInt());
    }
,

像这样尝试最小和最大。

int x = 10; int y = 20; int z = 30;
int min = Math.min(Math.min(x,y),z);
int max = Math.max(Math.max(x,z);

System.out.println("max = " + max);
System.out.println("min = " + min);

印刷品

max = 30
min = 10

如果您不想使用 Math 类方法,请编写自己的方法并以相同的方式使用它们。这些使用 ternary operator ?: 表示对于 expr ? a : b,如果表达式为真,则返回 a,否则返回 b;

public static int max (int x,int y) {
   return x > y ? x : y;
}

public static int min (int x,int  y) {
   return x < y ? x : y;
}

最后,您可以编写方法来接受任意数量的参数并返回适当的参数。这些首先检查空数组,然后检查空数组。

public static int min(int ...v) {
    Objects.requireNonNull(v);
   if (v.length == 0) {
       throw new IllegalArgumentException("No values supplied");
   }
   int min = v[0];
   for(int i = 1; i < v.length; i++) {
       min =  min < v[i] ? min : v[i];
   }
   return min;
}


public static int max(int ...v) {
    Objects.requireNonNull(v);
    if (v.length == 0) {
        throw new IllegalArgumentException("No values supplied");
    }
    int max = v[0];
    for(int i = 1; i < v.length; i++) {
        max =  max > v[i] ? max : v[i];
    }
    return max;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。