黑马程序员技术交流社区
标题:
字符串排序出现问题,编译无法通过
[打印本页]
作者:
王延龙
时间:
2013-7-26 15:35
标题:
字符串排序出现问题,编译无法通过
本帖最后由 杜光 于 2013-7-28 09:46 编辑
import java.util.ArrayList;
import java.util.List;
public class StringSortDemo {
public static void main(String[] args) {
demo();
}
public static void demo(){
List<String> list = new ArrayList<String> ();
list.add("abcd");
list.add("cba");
list.add("nba");
list.add("zz");
list.add("cfa");
list.add("cad");
list.add("nba");
//显示打印前的顺序
System.out.println(list);
// 调用自己定义的排序方法
mySort(list);
//显示排序后的顺序
System.out.println(list);
}
// 自定义一个排序方法mySort()
public static<T extends Comparable<? super T>> void mySort(List<T> list){
//遍历元素;其中角标i最大取到list.size()-1
for(int i = 0; i < list.size()-1; i++){
//嵌套循环,对元素经行排序
for(int j = i+1; j < list.size(); j++){
/ /比较两个元素
if(list.get(i) > list.get(j)){
//中间变量,存放元素
T temp = list.get(i);
//交换
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
}
}
//编译未通过,求解,自己哪里写错了?
作者:
陈贺
时间:
2013-7-26 15:58
if(list.get(i) > list.get(j))你是这句话有问题
list.get(i)结果为一个字符串,list.get(j)结果也为一个字符串,两个字符串不能直接用>比较.
作者:
lljwdbklb
时间:
2013-7-26 16:01
用equals()
作者:
の放下执著
时间:
2013-7-26 16:02
楼主有一句话写错了,在这个程序中ArrayList中存的是String字符串类型的数据,String字符串类型的数据不能用简单的大于等于小于号比较。应该用compareTo方法。
把 if(list.get(i) > list.get(j)){ 改为:if(list.get(i).compareTo(list.get(j))>0){ 即可。
不了解compareTo的可以查阅API文档。嘿嘿...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2