有没有办法减少if语句?

bob*_*bob 2 java if-statement

该程序应打印出每个数字生成100个随机数的次数,范围为1到10(然后将其放入数组中).

我想不出任何其他方式,而不是每个数字都有一个if语句.有没有办法避免使用其他代码或其他东西的那么多if语句?

public static void countNumbers() {
    Random generator = new Random();

    int arr[] = new int[101];
    int add[] = new int[10];

    for (int i = 0; i < 100; i++) {
        int sum = 0;
        arr[i] = generator.nextInt(10)+1;

        if(arr[i] ==1){
            add[0]++;
        }
        if(arr[i] ==2){
            add[1]++;
        }
        if(arr[i] ==3){
            add[2]++;
        }
        if(arr[i] ==4){
            add[3]++;
        }
        if(arr[i] ==5){
            add[4]++;
        }
        if(arr[i] ==6){
            add[5]++;
        }
        if(arr[i] ==7){
            add[6]++;
        }
        if(arr[i] ==8){
            add[7]++;
        }
        if(arr[i] ==9){
            add[8]++;
        }
        if(arr[i] ==10){
            add[9]++;
        }
    }

    System.out.println(Arrays.toString(add));
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 7

您应该注意,所有if语句都具有类似的结构:

if(arr[i] ==x){
    add[x-1]++;
}
Run Code Online (Sandbox Code Playgroud)

因此它们可以被替换add[arr[i]-1]++;.

您只需要一个if语句来验证您是否没有超出add数组的范围:

if (arr[i] <= 10 && arr[i] >= 1) {
     add[arr[i]-1]++;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如assylias所评论的那样,您并不真正需要if语句,因为您将arr数组初始化为1到10之间的值.

  • 你的情况多余 - "arr [i]`总是在1到10之间. (3认同)