Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字典顺序获取第二大元素_Java - Fatal编程技术网

Java 按字典顺序获取第二大元素

Java 按字典顺序获取第二大元素,java,Java,我试图按字典顺序或字母顺序打印数组中的第二大元素。流行音乐确实是第二大。然而;我的代码不是按照我在测试另一组数组时所想的方式设计的,显然我只是在打印最后一个元素。对我的错误有什么建议吗 import java.util.ArrayList; public class test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>();

我试图按字典顺序或字母顺序打印数组中的第二大元素。流行音乐确实是第二大。然而;我的代码不是按照我在测试另一组数组时所想的方式设计的,显然我只是在打印最后一个元素。对我的错误有什么建议吗

import java.util.ArrayList;
public class test {
public static void main(String[] args)
{
    ArrayList<String> list = new ArrayList<String>();
    list.add("bob");
    list.add("mill");
    list.add("sun");
    list.add("opera");
    list.add("bun");
    list.add("pop");
    System.out.println("list: " + list);
    String s = list.get(0);
    for ( int i = 0; i < list.size() - 1; i++) {
        if (list.get(i).compareTo(list.get(i + 1)) > 0) {
            s = list.get(i);
            list.set(i, list.get(i + 1));   
        } else if (list.get(i).compareTo(list.get(i + 1)) < 0) {
            s = list.get(i + 1);
        }
    }
    System.out.println("second largest: " + s);
}
}
import java.util.ArrayList;
公开课考试{
公共静态void main(字符串[]args)
{
ArrayList=新建ArrayList();
列表。添加(“bob”);
列表。添加(“工厂”);
列表。添加(“sun”);
列表。添加(“歌剧”);
列表。添加(“bun”);
列表。添加(“pop”);
System.out.println(“列表:+list”);
字符串s=list.get(0);
对于(int i=0;i0){
s=list.get(i);
list.set(i,list.get(i+1));
}else if(list.get(i).compareTo(list.get(i+1))<0{
s=list.get(i+1);
}
}
System.out.println(“第二大:+s”);
}
}

我建议使用以下伪代码打印第二大元素:

element largest = ""
element secondlargest = ""
for each element in list:
   if element > largest:
      secondlargest = largest
      largest = element
   else if element > secondlargest:
      secondlargest = element
print secondlargest

(如果您希望扩展此功能以打印第三、第四或第n个元素,则更智能的方法会更好-在极端情况下,您只需创建列表的排序副本并从末尾返回第n个项目)

我编辑了代码的空白以使其更易于阅读。您为什么要更改列表本身?更改列表?你是说我为什么要加入名单?谢谢你,不过我对数字也做了同样的事情;我想我在处理字符串时遇到了困难。@qvd这是完全相同的伪代码,只是需要进行字典比较(例如,比较并测试值)