打印出最大值和最小值之间的差异(使用4个小数位)

时间:2020-09-03 14:53:08

标签: java c intellij-idea

我正在尝试解决一个 Java 程序的问题,该程序可以从键盘上接受4个实数并打印出差异(使用4个小数位)。这些数字的最大值和最小值。

测试数据和预期输出: 输入四个数字:-1.5 2 7.5 11.2 区别是12.7000

我尝试了以下方法:

import java.util.Scanner;
public class solution05 {

    public static void main(String[] args)
    {
        double max, min;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter four numbers: ");
        double a1 = in.nextDouble();
        double a2 = in.nextDouble();
        double a3 = in.nextDouble();
        double a4 = in.nextDouble();

        if (a1 >= a2 && a1 >= a3 && a1 >= a4) {
            max = a1;
        }
        else
        if (a2 >= a1 && a2 >= a3 && a2 >= a4) {
            max = a2;
        }
        else
        if(a3 >= a1 && a3 >= a2 && a3 >= a4){
            max = a3;
        }
        else
        {
            max = a4;
        }

        if(a1 >= a2 && a1 >= a3 && a1 >= a4){
            min = a1;
        }
        else
        if(a2 >= a1 && a2 >= a3 && a2 >= a4){
            min = a2;
        }
        else
        if(a3 >= a1 && a3 >= a2 && a3 >= a4){
            min = a3;
        }
        else
        {
            min = a4;
        }
        double result = max - min;
        System.out.println("Difference is: " +result);
    }
}

我的输出是

Enter four numbers: 
1
5
4
9
Difference is: 0.0

Process finished with exit code 0

我遵循了具有类似目的的C代码中的概念。

#include <stdio.h>
  int main() {
    double a1, a2, a3, a4;
    double max, min;
    printf("Input four numbers: \n");
    scanf("%lf%lf%lf%lf", & a1, & a2, & a3, & a4);
    if (a1 >= a2 && a1 >= a3 && a1 >= a4)
      max = a1;
    else if (a2 >= a1 && a2 >= a3 && a2 >= a4)
      max = a2;
    else if (a3 >= a1 && a3 >= a2 && a3 >= a4)
      max = a3;
    else
      max = a4;
    if (a1 <= a2 && a1 <= a3 && a1 <= a4)
      min = a1;
    else if (a2 <= a1 && a2 <= a3 && a2 <= a4)
      min = a2;
    else if (a3 <= a1 && a3 <= a2 && a3 <= a4)
      min = a3;
    else
      min = a4;
    printf("Difference is %0.4lf\n", max - min);
    return 0;
  }

我在这里想念什么。请帮忙。 预先谢谢你

3 个答案:

答案 0 :(得分:0)

在secons中,如果您将代码链化

if(a1 >= a2 && a1 >= a3 && a1 >= a4){
        min = a1;
    }

代替

 if(a1 <= a2 && a1 <= a3 && a1 <= a4){
        min = a1;
    }

答案 1 :(得分:0)

首先,您可以减少代码,然后将nextInt()更改为nextDouble(),然后,如果仍然无法运行,请尝试打印maxmin,检查它们的分配是否正确。

import java.util.Scanner;

public class solution05 {

    public static void main(String[] args)
    {
        double max, min;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter four numbers: ");

        double a1 = in.nextDouble();
        double a2 = in.nextDouble();
        double a3 = in.nextDouble();
        double a4 = in.nextDouble();

        max = Math.max(a1, a2);
        max = Math.max(max, a3);
        max = Math.max(max, a4);

        min = Math.min(a1, a2);
        min = Math.min(min, a3);
        min = Math.min(min, a4);

        // Print max and min here
    
        double result = max - min;
    
        String output = String.format("Difference is: %.4f", result);
        System.out.println(output);
    }
}

答案 2 :(得分:0)

您可以使用Math.min和Math.max使事情变得简单:

double max = Math.max(a1, a2);
max = Math.max(max, a3);
max = Math.max(max, a4);

double min = Math.min(a1, a2);
min = Math.min(min, a3);
min = Math.min(min, a4);

现在简单地:

double difference = max - mix;