【发布时间】:2019-07-21 03:47:09
【问题描述】:
任务是从一个包含整数的列表创建两个数组列表。新列表计算增加的整数数量,然后计算减少的整数数量。然后我要添加两个“计数”数组列表以获得一个包含上/下总和的列表。向上计数正确生成,然后向下计数正确生成,但是当创建向下计数时,向上计数被更改以匹配向下计数,所以我的总数是错误的。我不明白为什么第二个数组列表会自动更改第一个数组列表。
System.out.println("input list " + list);
// create an object to use the runList method to create the array list that will represent the runs list
temp listRunCount = new temp();
ArrayList<Integer> list_2 = new ArrayList<Integer>();
list_2=listRunCount.runLists(list);
System.out.println("zero list: " + list_2);
// create an object to use the listRunUpCount method to find all the run up elements of the input array list
ArrayList<Integer> listRunUpCount = new ArrayList<Integer>();
listRunUpCount=listRunCount.findRuns(list, list_2, RUN_UP);
System.out.println("Run up list " + listRunUpCount);
// create an object to use the listRunUpCount method to find all the run up elements of the input array list
ArrayList<Integer> listRunDownCount = new ArrayList<Integer>();
listRunDownCount=listRunCount.findRuns(list, list_2,RUN_DOWN);
System.out.println("Run Down list " + listRunDownCount);
//Method for counting
public ArrayList<Integer> findRuns(ArrayList<Integer> list, ArrayList<Integer> lRCT,int pDir){
ArrayList<Integer> listRunCountTemp = lRCT;
int i=0, k=0;
final int RUNS_UP = 10;
final int RUNS_DOWN = 20;
while(i<list.size()-1)
{
if(pDir == RUNS_UP && list.get(i)<= list.get(i+1))
{
k++;
}
if(pDir == RUNS_DOWN && list.get(i)>= list.get(i+1))
{
k++;
}
else
{
if(k!=0)
{
listRunCountTemp.set(k-1,listRunCountTemp.get(k-1)+1);
k=0;
}
}
i++;
}
return listRunCountTemp;
}
数组生成后的输出
Reading file...
input list [1, 2, 3, 4, 5, 4, 3, 5, 6, 7, 9, 8, 7, 6, 5, 4, 3, 5, 6, 7]
zero list: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run up list [0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run Down list [0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run up list [0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
【问题讨论】:
-
这是一个 ArrayList,而不是两个。
ArrayList<Integer> listRunCountTemp = lRCT;创建一个新变量,但不是一个新列表。 -
该方法是一种旧方法,无法正确计算运行次数,此方法有效