如何找到最小值(不起作用)原因?

时间:2013-11-06 17:18:19

标签: java eclipse logic

我知道如何通过使minvalue成为一个非常大的数字来使代码工作。 我只需要知道eclipse背后的逻辑没有运行这个程序

public static int getMinValue(int[] ary)
    {
        int Minvalue = 0;
        random(ary);
    for (int i=ary.length-1; i >=0 ;i-- )
    {
            if (ary[i]<ary[i--])
                 Minvalue=ary[i];
    }
        System.out.printf("Minvalue:%d",Minvalue);
        return Minvalue;


    }

3 个答案:

答案 0 :(得分:1)

我会这样做:

public static int getMinValue(int[] ary) {
    random(ary);
    if (ary.length > 0) {
        int minValue = ary[0];
        for (int i = 1; i < ary.length; i++) {
            if (ary[i] < minValue)
                minValue = ary[i];
        }
        System.out.printf("Minvalue:%d", minValue);
        return minValue;
    }
    throw new RuntimeException("The array must contain at least one element");
}

您的实现中的问题是,您应该将数组的元素与minValue中的for-statement变量进行比较,该变量包含您已阅读的值之间的最小值。此外,您使用i--更改for-statement的警卫评估。 另一件需要注意的事情是,至少在我看来,从for-loop0而不是“递减”的“递增”ary.length更为自然...... < / p>

答案 1 :(得分:0)

1)您需要使用Arrays.sort(ary)或自定义排序算法(如Bubble Sort,quicksort等)对int数组进行排序。

2)比最小值或ary [ary.length-1]或最大值

访问第一个索引ary [0]

就是这样。

public static int getMinValue (int[] ary) throws Exception 
{
    int Minvalue = 0;

    if (ary.length > 0 )
    {
     Arrays.sort(ary);

     Minvalue = ary[0];

     return Minvalue;
    }
    else
    {
        throw new Exception ("Empty array");
    }


}//end method

答案 2 :(得分:-2)

它不起作用,因为您只检查在检查之前的索引位置中出现的数组中的值。

如果要查找检查数组中所有可能值所需的最小值。

for (int i=ary.length-1; i >=0 ;i-- )
{
    Boolean flag = false; //this stays false in the case of lowest min value
    for (int z=ary.length-1; z>=0; z--)
        if (ary[i]>ary[z]) 
             flag = true; //flag is true if any array value is greater than current

    if(!flag)
    {
        minValue = ary[I];
        break; //just to avoid useless checks
    }
}