到目前为止,我得到了这个代码:
int secondLargest = list.get(0);
int largest = list.get(0);
for (int i = 0; i < list.size(); i++)
{
if(list.get(i) > largest)
{
secondLargest = largest;
largest = list.get(i);
if(list.get(i) > secondLargest && list.get(i) != largest)
{
secondLargest = list.get(i);
}
}
}
System.out.print("Second biggest number ");
return secondLargest;
问题是当我使用这段代码时(列表是:)
list2.add(1);
list2.add(2);
list2.add(10);
list2.add(9);
list2.add(8);
list2.add(7);
因为10是最高的数字,所以对第二高的数字的“搜索”在2处停止。我该怎么解决?
7条答案
按热度按时间mw3dktmi1#
使用
Arrays.sort(array);
并获取第二个元素。0wi1tuuw2#
将第二个
if condition
放在第一个if条件之外。因为
second largest
小于largest
,所以你永远不会在if
块中找到它,它会检查最大值。ebdffaop3#
你可以首先使用Collections.max()函数在ArrayList中找到最大值,一旦你有了最大值元素,找到该元素的索引并将其从数组中删除。再次使用Collections.max()查找数组中第二大的数字。代码如下
让我知道如果需要更多的细节。
1yjd4xko4#
使用两个for循环。第一个应该找到最大的数字,并存储其索引位置。第二个应该找到与先前找到的数字不在同一索引位置的最大数字。(这将确保您不会错过第二大数字与最大数字相同的情况。)
如果您认为合适,请使用
Arrays.sort(array);
并按照uı的建议获取第二个元素。ukqbszuj5#
hmmo2u0o6#
在循环的第一个
if statement
中,检查second largest
而不是largest
。下面的内容会让你继续下去wj8zmpe17#