编写一个名为q3的公共静态方法,它接受一个Integer类型的ArrayList并返回一个int。此方法返回次数据中出现的最高有效值,其中有效值被定义为从输入中获取每个值的正弦的最小结果。
我不确定我做错了什么。有人可以帮忙吗?
public static int q3(ArrayList<Integer> name){
double max = Integer.MAX_VALUE;
int count =0;
for(double value : name){
if(Math.sin(value) < max ){
max = Math.sin(value);
count++;
} else if (Math.sin(value) == max) {
count ++;
}
}
return count;
}
答案 0 :(得分:0)
根据我对最重要值的定义的理解,该方法应该计算从数组开始到结束时找到的每个最小值。这意味着只要您找到最小值(包括最小值等于当前最小值),您就可以计算它。
public static int q3(List<Integer> name){
double min = name.get(0);
int count = 0;
for(int i = 1 ; i < name.size() ; i++){
double value = name.get(i);
if(Math.sin(value) <= min){
min = Math.sin(value);
count++;
}
}
return count;
}
话虽如此,以下是对您的计划的一些更正:
int min = Integer.MAX_VALUE;
该数字不是数组的一部分,因此在计算数组中找到的最小数字时,您无法使用此方法。数组的第一个数字(几乎)总是较小,所以计数会自动增加到1,原因很明显,但在此之前你没有比较数组的任何元素,那么你怎么能算数呢? 1,对吗?用于查找线性时间最小值的优化版本是定义数组的min变量以指向第一个元素并从数组的第二个元素开始迭代。