Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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_Sorting_Arraylist - Fatal编程技术网

Java 二次排序数组列表

Java 二次排序数组列表,java,sorting,arraylist,Java,Sorting,Arraylist,我一直在尝试在java中使用二次排序,对消息的arraylist进行排序。 我已经使用了下面的代码,但是它不会为我编译。我经常犯的错误是 找不到符号变量长度 以下是我正在使用的排序和交换: public static void quadraticSort(ArrayList<Message> m) { String s1 = "abcd"; String s2 = "efgh"; int val = "abcd".compareTo("efgh");

我一直在尝试在java中使用二次排序,对消息的arraylist进行排序。 我已经使用了下面的代码,但是它不会为我编译。我经常犯的错误是

找不到符号变量长度

以下是我正在使用的排序和交换:

 public static void quadraticSort(ArrayList<Message> m)


{
    String s1 = "abcd";
    String s2 = "efgh";
    int val = "abcd".compareTo("efgh");

    for (int i = 0; i < s1.length; i += 1)
    {
        for (int s2 = i; s2 < s1.length; s2 += 1)
       {
           if ((int)s1[s2].messageText.compareTo(0) <(int)s2[i].messageText.compareTo(0))

           {
               swap(s1, i, s2);
           }
        }

    } 
}

private static void swap(ArrayList<Message> list, int to, int from)
{
   Message temp = list[to];
   list.set(to , from);
   list.set(from , temp);
}
公共静态void quadraticSort(ArrayList m)
{
字符串s1=“abcd”;
字符串s2=“efgh”;
int val=“abcd”。比较(“efgh”);
对于(int i=0;i如果((int)s1[s2].messageText.compareTo(0)在代码中,您试图访问
字符串
实例的
长度
属性/字段,该属性/字段不存在。相反,您希望使用
长度()
方法:

但您还有更多的bug。您还试图使用数组/括号表示法访问字符串的索引值:

s1[s2]


字符串对象的字符不能以这种方式访问。您应该改用
charAt()
方法。

我建议您阅读的javadoc。在Java中,它们被视为第一类对象,而不是字符数组


要获取字符串的长度,必须使用
length()
。此外,要从
字符串中的给定位置获取字符,必须使用
charAt(int index)

字符串实例没有
length
字段。但是,它们有
length()
方法。您还试图在
字符串上使用索引器,但这不会起作用。是的。Java中的字符串的行为与数组不同,它们是对象。请使用
“hello”.charAt(0)
而不是
“hello”[0]
。感谢您的反馈。我已经重新分析了我的代码,但是编译器告诉我不能在int val=部分将charAt应用于给定的类型。我认为这不是您想要的。您可以问一个单独的具体问题,我来看看。
String s = "abc";
s.length(); // = 3
s.length; // compiler error