Java Arraylist中的气泡排序

Java Arraylist中的气泡排序,java,Java,我曾经尝试过一个代码按降序排序,它对一些输入很好,但对一些输入却不行。我试过100200,a,400输出是400200,a,100。但如果我尝试d,1,4,c,9,6的输出是d,6,9,c,4,1。我不应该碰这个角色。我试过了 String input = JOptionPane.showInputDialog("Enter a string:"); String[] abc = input.split(","); ArrayList<String> num = new ArrayL

我曾经尝试过一个代码按降序排序,它对一些输入很好,但对一些输入却不行。我试过100200,a,400输出是400200,a,100。但如果我尝试d,1,4,c,9,6的输出是d,6,9,c,4,1。我不应该碰这个角色。我试过了

String input = JOptionPane.showInputDialog("Enter a string:");
String[] abc = input.split(",");
ArrayList<String> num = new ArrayList<String>();
for (int i = 0; i < abc.length; i++) {
    num.add(abc[i]);
}

for ( int z = 0; z < num.size() -1 ; z ++ ) {
    int numI;
    try {
        numI = Integer.parseInt(num.get(z));
    }
    catch (NumberFormatException nfe) {
        continue;
    }

    for (int j = z + 1; j < num.size(); j ++ ) {
        int numJ;
        try {
            numJ = Integer.parseInt(num.get(j));
        } 
        catch (NumberFormatException nfe)
        {
            continue;
        }
        if (numI < numJ)
        {
            String temp = num.get(z);   //swapping
            num.set(z, num.get(j));
            num.set(j, temp);
        }
    }
}
for(String el:num){
    System.out.print(el+",");
}
String input=JOptionPane.showInputDialog(“输入字符串:”);
字符串[]abc=input.split(“,”);
ArrayList num=新的ArrayList();
for(int i=0;i

这里出了什么问题?

首先将完整的输入解析为整数,然后进行排序不是更容易吗?在十进制中,像
d
c
这样的字符在尝试解析时会抛出数字格式异常,因此您可以跳过它们。只需使用
String#compareTo(String)
。不需要将其解析为int。您实现的冒泡排序不正确。当实际顺序为(0,1)(1,2)(2,3)时,看起来您正在比较元素(0,1)然后(0,2)然后(0,3)等等。。。。然后(1,2)(2,3)…@Obicere问题似乎是对数字进行排序,并保留非数字,使用冒泡排序,按递减排序order@epylar我该怎么办?