Java 二次排序数组列表
我一直在尝试在java中使用二次排序,对消息的arraylist进行排序。 我已经使用了下面的代码,但是它不会为我编译。我经常犯的错误是 找不到符号变量长度 以下是我正在使用的排序和交换: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");
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