-2

我需要帮助使用冒泡排序算法按字母顺序对这个数组进行排序。

我的代码是:

public class Strings
{
    public static void main(String[] args)
    {
        Scanner reader = new Scanner(System.in);
        String tempStr;


        System.out.print("Enter the strings > ");
        String s1 = new String(reader.nextLine());

        String[] t1 = s1.split(", ");

        for (int t=0; t<t1.length-1; t++)
        {
           for (int i = 0; i<t1.length -1; i++)
           {
               if(t1[i+1].compareTo(t1[1+1])>0)
               {
                   tempStr = t1[i];
                   t1[i] = t1[i+1];
                   t1[i+1] = tempStr;
                }
            }

        }

        for(int i=0;i<t1.length;i++)
        {
            System.out.println(t1[i]);
        }
    }
}

代码可以编译,但不按字母顺序排序。请帮我。

4

2 回答 2

2

您的代码中有三个错误。

第一个错误在内部 for 循环中,在您执行 check 语句的地方,它应该i < t1.length - t -1不是i < t1.length -1. 您减去 t 是因为您不想再循环遍历整个数组,只循环它的第一部分。

第二个和第三个错误在 if 语句中。您需要将大于符号转换为小于符号,因为您设置 compareTo 方法的方式将返回一个负数。

此行中的另一个错误是,在 compareTo 参数中,您1 + 1实际上应该是 just i,因为您希望比它要比较的对象少一个。

固定的工作代码如下(评论是你原来的):

   public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String tempStr;

        System.out.print("Enter the strings > ");
        String s1 = new String(reader.nextLine());

        String[] t1 = s1.split(", ");

        for (int t = 0; t < t1.length - 1; t++) {
            for (int i= 0; i < t1.length - t -1; i++) {
                if(t1[i+1].compareTo(t1[i])<0) {
                    tempStr = t1[i];
                    t1[i] = t1[i + 1];
                    t1[i + 1] = tempStr;
                }
            }
        }
        for (int i = 0; i < t1.length; i++) {
            System.out.println(t1[i]);
        }
   }
于 2013-10-15T01:41:49.220 回答
0

please change

String[] t1 = s1.split(", "); 

to

String[] t1 = s1.split("");

This will solve the issue.

于 2017-05-04T13:22:08.257 回答