我知道如何通过使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;
}
答案 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-loop
到0
而不是“递减”的“递增”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
}
}