我一直试图在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);
}
答案 0 :(得分:4)
在您的代码中,您尝试访问不存在的length
个实例的String
属性/字段。相反,您希望使用length()
方法:
String s = "abc";
s.length(); // = 3
s.length; // compiler error
但是你有更多的错误。您还尝试使用数组/括号表示法访问String的索引值:
s1[s2]
以这种方式无法访问String对象的字符。您应该使用charAt()
方法。
答案 1 :(得分:1)
我建议您阅读String
的javadoc。在Java中,它们被视为第一类对象;不是一个字符数组。
要获取字符串的长度,您必须使用length()
。此外,要从String
中的给定位置获取角色,您必须使用charAt(int index)