【发布时间】:2015-02-10 04:47:57
【问题描述】:
我正在编写一个名为 HighSchool 的类,其中包含一个名为 university 的字符串数组列表。我的目标是创建一个名为 addCollege(String c) 的方法,该方法接受字符串,检查列表,然后只要字符串不在列表中,它就会按正确的字母顺序放置。这是我到目前为止所做的,但它只对列表的第一部分进行排序。我也在尝试在没有 collections.sort 的情况下做到这一点。
public void addCollege(String c){
String s="";
for(int i=0; i<=universities.size()-1; i++){
if(c.equals(universities.get(i)))
return;
}
universities.add(c);
for(int p=1; p<=universities.size()-1; p++)
if(universities.get(p-1).compareTo(universities.get(p))>0){
s=universities.get(p);
universities.set(p, universities.get(p-1));
universities.set(p-1, s);
}
}
这是测试仪的内容。其中大部分与我的问题无关:
public class schoolTester {
public static void main(String[] args) {
School s=new School(1000, "600 Pine Lane", "Pines School", "Bob Smith");
int[] x={4,4,4,4,4,4};
Elementary e=new Elementary(2000, "601 Pine Lane", "Everglades", "Bobby Smith", x);
ArrayList<String>uni=new ArrayList<String>();
uni.add("Harvard");
uni.add("MIT");
uni.add("Georgia Tech");
uni.add("UCF");
HighSchool h=new HighSchool(4000, "602 Pine Lane", "hi-school", "bob smith", uni);
h.addCollege("Berkely");
h.addCollege("Miami");
h.addCollege("FSU");
h.addCollege("FGCU");
System.out.println(h.getColleges());
h.addCollege("FSU");
System.out.println(h.getColleges());
}
}
【问题讨论】:
-
我假设这是为了学校,排除 List.Contains() 吗?我会开始做的一件事 - 在比较名称时,在两者上添加一个 toUpper() - 或 equalsIgnoreCase() 以防万一它们出现不同的情况
-
好主意。我注意到 java 在处理不同的情况时可能会感到困惑。
-
它不起作用的原因是您尝试仅使用一次扫描数组进行排序假设您不想递归地执行此操作,请添加一个 while 标志 = 1; while(flag == 1){ 如果更改设置为 1,则此处的排序循环设置为 1,否则为 0}
-
你太棒了,我的朋友!输入答案,这样我就可以给你应得的功劳