【发布时间】:2015-06-16 20:11:34
【问题描述】:
我正在上高中,正在学习 AP 计算机编程课程 (Java)。在我的课程中,我必须创建一个void 方法来对传入的数组进行排序。它必须是void(要求)并且需要修改传递给它的变量(要求)。我必须使用他们提供的跑步者代码。我对编码还很陌生,仍然对语言可以做什么和不能做什么感到有些困惑。排序工作,但我看不到如何修改 main 方法的传入变量。
public class InsertionSort extends Sort {
public <T extends Comparable<T>> void sortList(ArrayList<T> arr) {
ArrayList<T> arr2 = new ArrayList<T>(arr.size());
for (int i = 0; i < arr.size(); i++) {
boolean done = false;
int insertIndex = 0;
int k = i;
T next = arr.get(i);
while (k>0 && insertIndex == 0) {
if (next.compareTo(arr2.get(k-1)) > 0) {
// System.out.println("if i" + i + " k" + k);
insertIndex = k;
done = true;
}
k--;
}
arr2.add(insertIndex, arr.get(i));
}
//System.arraycopy(arr2,0,arr,0,arr2.size());
arr = arr2; //<--my attempt to alter runner variable
//System.out.println(" arr 2 = " + arr2);
//System.out.println(" arr 1 = " + arr);
}
}
// 跑步者
public static void main( String[] args )
{
ArrayList<String> s = new ArrayList<String>();
String[] sArr = { "you", "can", "observe", "a", "lot", "just", "by", "watching" };
for ( String x : sArr ) { s.add( x ); }
Sort ss = new InsertionSort();
ss.sortList( s );
System.out.println( s );
}
我基本上需要在调用sortList() 方法(即已排序)时修改ArrayList(s),然后从对System.out.println() 的调用中打印。
排序有效,但“s”不会改变,我不知道从哪里开始修复它。调用者完全一成不变(类要求),类和方法头必须保持不变(出于相同的原因)。
我可能在复制和粘贴时遗漏了“{”或“}”。
【问题讨论】:
-
Sort 类对我来说是个谜,它由课程提供,我没有展示它。它基本上(据我了解)是一个仅用于统一其他排序方法的类(除了插入排序)。
标签: java variables methods arraylist void