Java 打印出最大值和最小值的差值(使用小数点后4位)
我正在尝试解决一个Java程序的问题,该程序从键盘接受4个实数,并打印出这些数字的最大值和最小值的差(使用小数点后4位) 测试数据和预期输出: 输入四个数字:-1.5 2 7.5 11.2 差额为12.7000 我试过以下方法: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;
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()。但输出是相同的。