我需要打印列表中第二大的数字,下面代码的输出是列表中除了第一个和最后一个元素之外的所有元素。
这是什么错误?
void main () {
List a = [9,6,4,10,13,2,3,5];
a.sort;
for(int x in a){
for (int max in a){
for (int second_last in a){
if (x > max) {
second_last = max;
max = x;
} else if (x > second_last && x != max) {
second_last = x;
print(second_last);
}
}
}
}
}
4条答案
按热度按时间1l5u6lss1#
您的代码有几处错误:
1.实际上你并不是在对列表进行排序。sort方法返回一个新的排序列表,它并不对现有列表进行排序。所以你需要做的是:
1.当你只需要迭代一次的时候,你已经迭代了3次。
1.你没有记录第二大的数字,你只是把它打印出来。
1.您没有检查重复项。如果列表中有重复的数字,您的代码将多次打印这些数字。
这是一个修正后的伪代码
nwlls2ji2#
我需要打印列表上第二大的数字
1.对数组排序(desc)。
1.访问第二个元素。
db2dz4w83#
sort
上缺少()
。您可以atmip9wb4#
如果你找到一个解决方案,是不使用排序函数,但也工作与所有可能的条件,所以你可以使用这个解决方案,以及,