【发布时间】:2010-11-04 20:29:53
【问题描述】:
我试图在数组中找到最长的递减数字序列。我不确定我在以下代码中做错了什么。
public static int getDecSeq(double[] data) {
int currentSeq = 1;
int currentIndex = 1;
int longestSeq = 0;
int longestIndex = 0;
for (int i = currentIndex; i < data.length; i++) {
if (data[i] < data[i - 1]) {
currentSeq++;
} else {
currentSeq = 1;
currentIndex = i;
}
if (currentSeq > longestSeq) {
longestSeq = currentSeq;
longestIndex = currentIndex;
}
//double[] sequence = new double[longestSeq];
//for (int j = longestIndex; j < longestSeq; j++) {
//sequence[j]
//}
}
return longestSeq;
}//close getDecSeq
看起来现在真正的问题是如何正确设置数据,以便我可以在方法中使用它。
getData(input) 从文件中返回一堆数字并将它们存储在一个数组中。
我写道:
double[] data = getData(input);
System.out.println("longest sequence is" + getDecSeq(data));
我做错了。我的方法奏效。当我将变量数据声明为:
double[] data = {119.1, 186.4, 46.3, 89.0 ...};
一切正常。 那么如何重写我调用数据的方式来工作呢?
getData 是
public static double[] getData(Scanner input) {
double[] list = new double[70]; //Construct an array, length 70, to hold values from file
int count = 0;
while (input.hasNextDouble()) {
double n = input.nextDouble();
list[count] = n;
count++;
}
double[] newList = new double[count];
for (int i = 0; i < newList.length; i++ ) {
newList[i] = list[i];
}
return newList;
}//close getData
【问题讨论】:
-
你有什么问题?请举一个你的算法不起作用的例子......
-
参见:stackoverflow.com/questions/3878105/…(但不要复制!)
-
你的
getData是什么?请贴出这个函数的代码。 -
检查 getData 的结果(尝试
System.out.println(Arrays.toString(getData(input)));) 数组内容是否符合您的预期?也许您误解了文件格式(例如,文件中的第一行是否说明后面有 多少 个双打?) -
这正是我用来查看getData结果的,所以是一样的。
标签: java arrays algorithm sequence