我尝试使用算法查找Int数组中的最大数字。但代码似乎没有工作,我不知道为什么。我写了另一个代码,程序现在运行正常,但只是想找出为什么这个特定的代码不能正常工作。谢谢!
public static int maxNumberOfPoints (int [] max){
int maxPoints=0;
for (byte counter=1;counter<max.length;counter++){
if(max[counter]>=max[counter-1]){
maxPoints =(int) (max[counter]);
}
}
return maxPoints;
}
答案 0 :(得分:0)
您只需将元素与之前的元素进行比较;你应该把每一个与迄今为止看到的最大值进行比较。
答案 1 :(得分:0)
问题出在您的比较中,
if(max[counter]>=max[counter-1])
您正在查看数组中的当前值是否大于它之前的值。 这意味着您将获得前一个值更大的最后一个值。
您想要的是将它与目前为止找到的最大值(maxPoints)进行比较
if(max[counter]>=maxPoints)
此外,您还需要将循环更改为counter=0
答案 2 :(得分:0)
因为您要与列表中的前一个元素进行比较,而不是与maxPoints进行比较。在这里,试试这个:
public static int maxNumberOfPoints (int [] max){
int maxPoints=0;
for (byte counter=0;counter<max.length;counter++){
if(max[counter]>maxPoints{
maxPoints =(int) (max[counter]);
}
}
return maxPoints;
}
答案 3 :(得分:0)
如果你想在数组中找到最小元素,下面应该可以做到:
public static int maxNumberOfPoints (int [] max){
int maxPoints=max[0];
for (byte counter=0;counter<max.length;counter++){
if(max[counter]>maxPoints{
maxPoints =(int) (max[counter]);
}
}
return maxPoints;
}
微小的变化和算法的一个非常重要的部分是你必须找到给定数组中的最大数字。使用您的代码,您假设最大值为零,因此如果您有一个负数数组,则代码将失败。
如果我有:int [] myArray = {-6,-2,-1,-5,-8},你的算法将返回0,这是不正确的(应该是-1)。
因此,通过说第一个元素是最大值,并且在遍历数组时遇到最小值并遇到大于当前最大值的元素。