【问题标题】:Display 3 numerical values ​in java with greater, less and equal在java中显示大于、小于和等于的3个数值
【发布时间】:2021-03-03 16:51:18
【问题描述】:

我试图在这段代码中显示 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);
        }
    }
}

【问题讨论】:

    标签: java arrays if-statement case java.util.scanner


    【解决方案1】:

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

    1. 初始化单独的变量以分别存储最大值和最小值。例如int highest = x; int lowest = x;
    2. 将当前最高值和当前最低值分别与yz 进行比较,必要时进行更改。例如highest = y > highest : y ? highest; lowest = y < lowest ? y : lowest;
    3. 所有比较完成后,如果最大值与最小值相同,则所有xyz都相同。

    【讨论】:

      【解决方案2】:

      尝试这样的最小值和最大值。

      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,y),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;
      }
      

      【讨论】:

        【解决方案3】:
            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, y, z).min().getAsInt());
            }
        

        【讨论】:

          猜你喜欢
          • 2011-01-25
          • 2022-12-09
          • 1970-01-01
          • 2016-09-30
          • 2013-09-02
          • 2012-10-22
          • 1970-01-01
          相关资源
          最近更新 更多