在编写代码时考虑if,else if else语句(java)

时间:2015-06-18 05:59:22

标签: java if-statement

我编写了一个程序,它接受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);


}

}

2 个答案:

答案 0 :(得分:7)

您可以使用Math.maxMath.min

来避免使用if语句
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解决方案可能是最好的。但是,当您发现自己使用n1n2n3等数字标记变量时,您至少应该考虑使用数组。

以下数组n的索引值为0n.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);
  }
}