Java 嵌套for循环工作不正确,存在逻辑错误

Java 嵌套for循环工作不正确,存在逻辑错误,java,Java,我正在为区域经理编写一个计算销售统计数据的小程序(作为一个学校项目),用户输入销售部门的数量、每个季度的销售额、每个部门的销售额 程序输出: the sales (correctly) the sales change from last quarter per division (correctly) the quarterly totals (correctly) the division totals (correctly) the division averages (corre

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

程序输出:

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;
            }
        }
    }
int[]topDivQuarter=newint[4];
对于(整数四分之一=0;四分之一<4;四分之一++){
topDivQuarter[quarter]=0;//初始化为零,因此第一部分是默认的顶部。
对于(intdiv=1;div(销售[部门-1][季度]){
topDivQuarter[季度]=部门;
}
}
}
我和两个朋友商量过,没有人能发现错误

测试我一直在使用的销售

第5分部

第一分区第1季1:1

第一分区第二季第二季

第一分区第三季第三季

第一分区第四季第四季

第二分区第1季第5分

。。。(12345678912345678912)

结果是4,4,3,3,应该是每季度3,5,2,2的最高级别

请原谅输出的格式问题,我现在正在解决这个问题,因为我被这个错误难住了。

if ((sales[div][quarter]) > (sales[div - 1][quarter]))
您只是在比较两个连续部门之间的销售数字。您应该比较目前顶级部门与当前部门之间的销售数字:

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

您是否已在IDE调试器中遍历了代码?如果没有,那就是开始。在每个步骤中检查变量,以了解它偏离您的期望的地方。顺便说一句,使用2D数组来表示这种类型的数据在1960年的Fortran中非常流行。这是21世纪,你应该使用合适的类和数据结构。“使用2D数组来表示这种类型的数据是1960年代的Fortran”很好!尽量在这里提供一个链接,而不是一个链接。@JimGarrison 2D数组只是因为它是一个学校项目,我通常不会使用它。我更喜欢上课。我正在自动取款机上爬行,但我对使用它缺乏经验。只是意味着要花更长的时间才能弄清楚(我正在使用)。@Shadowfax我认为我提供的代码片段将是所有人都需要的,这应该是一些我可能忽略的小错误。或者错误的格式导致了一个问题。搞定了,我知道我忽略了一些愚蠢的事情,但我盯着它看了40分钟后还是看不见。非常感谢您抽出时间。