我必须编写一个在数组中获得最小数字的代码

时间:2013-11-17 00:03:15

标签: arrays for-loop

以下是我的代码。它一直返回4但最小的值是3.如何让它读取3而不是4?

public static int getMinIndex(int[]a, int index) {
    int min=a[index];
    int minIndex=index;
    for(int i=index+1;i<a.length;i++) {
        if(a[i]<min) {
            min=a[i];
            minIndex=i;
        }
    }
    return minIndex;
}

public static void main(String[] args) {
// TODO Auto-generated method stub

    int[] a={11,4,8,6,3,10};
    int min=ch7Codes.getMinIndex(a,1);
    System.out.println(min);
}

}

2 个答案:

答案 0 :(得分:4)

有更好的方法来获得数组的最小值,但在你的情况下,问题是你通过数组的方式,它从0开始而不是1,你没有得到miniimun值,你得到的那个向量中的最小值wchich的索引是4,相应的值是3

public static int getMinIndex(int[]a, int index){
    int min=a[index];
    int minIndex=index;
    for(int i=index+1;i<a.length;i++){

        if(a[i]<min){
            min=a[i];
            minIndex=i;
        }
    }

    return min; // with this you return the minimun value
}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    int[] a={11,4,8,6,3,10};
    int min=ch7Codes.getMinIndex(a,0);
    System.out.println(min);
}

答案 1 :(得分:1)

解决此问题时需要注意的一些事项

  • 您当前的方法是返回最小值数组中的索引位置。这种实施是正确的。
  • 要返回最小值(3小于4),您必须存储该值并返回值,而不是索引。
  • 数组从0开始,而不是1.如果数组有3个项目,则索引为{0,1,2}

这是返回数组中最小值的代码

public static int getMinIndex(int[]a) {
    // We'll say the first number in the array is the smallest
    int min = a[0];

    // Loop through every element. Since arrays start at 0, we -1 from length
    for(int i=0; i < a.length - 1; i++){
         // If a[i] is a smaller number, store that number
         if(a[i] < min){
             min=a[i];
          }
    }
    // Return the smallest number
    return min; 
}

我从方法中删除了index参数,因为它不需要。您当前的方法返回最小数字的索引(3位于数组的索引4处。)因此,快捷方式也可以执行

System.out.println(a[min]);