Java 打印出最大值和最小值的差值(使用小数点后4位)

Java 打印出最大值和最小值的差值(使用小数点后4位),java,c,intellij-idea,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;

我正在尝试解决一个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;
  }
#包括
int main(){
双a1、a2、a3、a4;
双最大值,最小值;
printf(“输入四个数字:\n”);
scanf(“%lf%lf%lf%lf”、&a1、&a2、&a3、&a4);
如果(a1>=a2&&a1>=a3&&a1>=a4)
max=a1;
如果(a2>=a1&&a2>=a3&&a2>=a4),则为else
max=a2;
如果(a3>=a1&&a3>=a2&&a3>=a4)
max=a3;
其他的
最大值=a4;

如果(a1以秒为单位,如果链接代码

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

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

如果(a1首先,您可以减少您的代码,然后将
nextInt()
更改为
nextDouble()
,然后,如果它还不起作用,请尝试打印
max
min
,以检查它们是否被正确分配

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

您可以使用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;

我必须以同样的方式更改所有条件吗?我有一个C程序,同样的问题。它运行良好。添加了有问题的代码。我必须以同样的方式更改所有条件吗?-是的,为什么使用NextTint()而不是nextDouble()?谢谢。更改为nextDouble()。但输出是相同的。