嵌套for循环工作不正确,出现逻辑错误

时间:2016-03-04 05:14:05

标签: java

我正在编写一个小程序来计算区域经理(作为学校项目)的销售统计数据,用户输入销售部门的数量,即每个部门的销售额。

程序输出:

the sales (correctly)

the sales change from last quarter per division (correctly)

the quarterly totals (correctly)

the division totals (correctly)

the division averages (correctly)

the top division per quarter (incorrectly, logical error)

使用下面的销售数字,我应该会收到每季度最高分部3,5,2,2的结果。使用其他数据会产生相同的逻辑错误(结果不同,仍然是错误的。)

这个计算的唯一地方是一小段12行代码。 其余的代码已经过测试并且工作正常,我的错误必须在这里,在这个片段中。

    int[] topDivQuarter = new int[4];

    for(int quarter=0; quarter < 4; quarter++){
        topDivQuarter[quarter] = 0; //Initialize at zero so division one is default top.
        for(int div=1; div < divNumb ; div++){ 
            //remember division first here, unlike the rest of the nested for loops.
            //Initialized to one because need to compare to previous division
            if ((sales[div][quarter]) > (sales[div - 1][quarter])){
                topDivQuarter[quarter] = div;
            }
        }
    }

我咨询了两个朋友,我们都没有人能找到错误。

我一直在使用的测试销售,

第5分部,

div 1季1:1

div 1季度2:2

div 1季度3:3

div 1季度4:4

div 2 quarter 1:5

......(12345678912345678912)

结果是4,4,3,3,应该是3,5,2,2作为每季度的最高分部。

请原谅输出的格式,我现在正在解决这个错误。

1 个答案:

答案 0 :(得分:1)

使用

if ((sales[div][quarter]) > (sales[div - 1][quarter]))

您只是比较两个连续部门之间的销售数字。您应该比较目前最高级别与当前部门之间的销售数字:

if ((sales[div][quarter]) > (sales[topDivQuarter[quarter]][quarter]))