我编写了一个程序,它接受Java中三个整数的总和和范围。我的程序有几个if语句用于查找范围(最大和最小整数之间的距离)。我想知道我的" if语句"是找到范围的最有效方法,如果没有,那么我怎样才能制作我的" if语句"对我的代码更有效率,以及在编写if时使用的其他if和else语句时应该考虑哪些事情。
Scanner in = new Scanner(System.in);
System.out.println("Enter an integer value for n1");
n1 = in.nextInt();
System.out.println("The (integer) value for n1 is " + n1);
System.out.println("Enter an integer value for n2");
n2 = in.nextInt();
System.out.println("The (integer) value for n2 is " + n2);
System.out.println("Enter an integer value for n3");
n3 = in.nextInt();
System.out.println("The (integer) value for n3 is " + n3);
sum = n1 + n2 + n3;
System.out.println("The sum of n1+n2+n3 = " + sum);
if(n3< n1 && n3<n2){
if(n2<n1){
maxRange = n1-n3;
}
else if (n2>n1){
maxRange = n2-n3;
}
}
if(n2<n3 && n2<n1){
if(n3<n1){
maxRange = n1-n2;
}
if(n3>n1){
maxRange = n3-n2;
}
}
if(n1<n2 && n1<n3){
if(n2>n3){
maxRange = n2-n1;
}
if(n3>n2){
maxRange = n3-n1;
}
}
aMean = (n1+n2+n3)/3;
System.out.println("the arithmetic mean is : " + aMean);
System.out.println("The maxRange is :"+ maxRange);
}
}
答案 0 :(得分:7)
您可以使用Math.max
和Math.min
int min = Math.min (n1,Math.min(n2,n3));
int max = Math.max (n1,Math.max(n2,n3));
int maxRange = max - min;
答案 1 :(得分:4)
实际上,对于只有三个元素,Math.max / Math.min解决方案可能是最好的。但是,当您发现自己使用n1
,n2
和n3
等数字标记变量时,您至少应该考虑使用数组。
以下数组n
的索引值为0
到n.length-1
,即0,1和2.为了保持用户界面不变,我添加了1索引获取元素编号,在消息中给出n1,n2,n3。
n[n.length-1]
是数组的最后一个元素。排序后,它是具有最高值的元素,n[0]
是最小元素,它们的差异是范围。
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] n = new int[3];
int sum = 0;
for (int i = 0; i < n.length; i++) {
System.out.println("Enter an integer value for n" + (i+1));
n[i] = in.nextInt();
System.out.println("The (integer) value for n" + (i+1) + " is " + n[i]);
sum += n[i];
}
System.out.println("The sum of n1+n2+n3 = " + sum);
Arrays.sort(n);
int maxRange = n[n.length - 1] - n[0];
double aMean = (double)sum / n.length;
System.out.println("the arithmetic mean is : " + aMean);
System.out.println("The maxRange is :" + maxRange);
in.close();
}
}
我使用n.length
而不是3来提高灵活性。考虑以下程序。重构是将数组分析代码与获取数组元素分开。数据现在可以来自任何地方,而不必是三个元素:
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
analyze(new int[]{0,42,3,7,8});
analyze(new int[]{4,3,10});
}
private static void analyze(int[] n) {
int sum = 0;
for (int i = 0; i < n.length; i++) {
System.out.println("The (integer) value for n" + (i+1) + " is " + n[i]);
sum += n[i];
}
System.out.println("The sum is : " + sum);
Arrays.sort(n);
int maxRange = n[n.length - 1] - n[0];
double aMean = (double)sum / n.length;
System.out.println("the arithmetic mean is : " + aMean);
System.out.println("The maxRange is : " + maxRange);
}
}