我正在尝试解决一个 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;
}
我在这里想念什么。请帮忙。 预先谢谢你
答案 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()
,然后,如果仍然无法运行,请尝试打印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);
}
}
答案 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;