所以我到目前为止得到了这段代码:
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);
第二个最高数字的“搜索”在2处停止,因为10是最高数字。我该如何解决这个问题?
答案 0 :(得分:6)
使用Arrays.sort(array);
并获取第二个元素。
答案 1 :(得分:2)
使用两个for循环。第一个应该找到最大的数字,并存储其索引位置。第二个应该找到与先前找到的数字不在同一索引位置的最大数字。 (这将确保您不会错过第二大数字与最大数字相同的情况。)
如果您认为合适,请使用Arrays.sort(array);
并按照ɐuıɥɔɐɯ的建议获取第二个元素。
答案 2 :(得分:1)
您可以首先使用Collections.max()函数在ArrayList中找到最大数字,一旦有了max元素,找到该元素的索引并从数组中删除它。再次使用Collections.max()查找数组中的第二大数字。代码如下
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(2);
al.add(3);
al.add(4);
System.out.println(al);
int j = Collections.max(al);
System.out.println("Max in the array is " + j);
al.remove(al.indexOf(j));
int max2 = Collections.max(al);
System.out.println(max2);
如果需要更多细节,请告诉我。
答案 3 :(得分:0)
将第二个
if condition
放在第一个if条件之外。
由于second largest
小于largest
,因此您永远不会在检查最大值的if
块中找到它。
int secondLargest = (int) list.get(0);
int largest = list.get(0);
for (int i = 1; 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;
答案 4 :(得分:0)
在循环的第一个if statement
内,检查second largest
而不是largest
。以下内容将帮助您
int secondLargest = list.get(0);
int largest = list.get(0);
for (int i = 0; i < list.size(); i++)
{
if(list.get(i) > secondLargest)
{
if(list.get(i) > largest ) {
secondLargest = largest;
largest = list.get(i);
} else {
secondLargest = list.get(i);
}
}
}