SalesByQtr分配有一些问题

时间:2017-03-20 23:49:51

标签: java

我有一项任务要求我制作SalesByQtr java程序我已经完成了大部分程序,但是我遇到了一些问题

首先:我的总数显示为双倍,我知道我需要printf来添加小数位。平均值也发生了同样的事情。

第二:我销售额最高的部门表示,第1部门的销售额在qtr 1中最高,并且在每个qtr中都会重复这一点,而且第1部门没有最高的销售额

最后:我的作业要求在qtrs 2-4中显示销售额的变化,我无法弄清楚如何做到这一点。

以下是我的教授正在寻找的示例输出

示例输出(项目符号点代表空格)

Q1:
   D1:·1000.00↵
   D2:·1700.00↵
   D3:·300.00↵
   D4:·2000.00↵
   D5:·1400.00↵
   D6:·500.00↵
Total:·6900.00↵
Average·sales:·1150.00↵
Division·with·highest·sales:4↵
Q2:
   D1:·2500.00,·Change:·1500.00↵
   D2:·500.00,·Change:·-1200.00↵
   D3:·700.00,·Change:·400.00↵
   D4:·2500.00,·Change:·500.00↵
   D5:·1450.00,·Change:·50.00↵
   D6:·1050.00,·Change:·550.00↵
Total:·8700.00,·Change:·1800.00↵
Average·sales:·1450.00↵
Division·with·highest·sales:1↵
Q3:
   D1:·3000.00,·Change:·500.00↵
   D2:·1000.00,·Change:·500.00↵
   D3:·120.00,·Change:·-580.00↵
   D4:·2700.00,·Change:·200.00↵
   D5:·980.00,·Change:·-470.00↵
   D6:·750.00,·Change:·-300.00↵
Total:·8550.00,·Change:·-150.00↵
Average·sales:·1425.00↵
Division·with·highest·sales:1↵
Q4:
   D1:·2700.00,·Change:·-300.00↵
   D2:·1300.00,·Change:·300.00↵
   D3:·155.00,·Change:·35.00↵
   D4:·3500.00,·Change:·800.00↵
   D5:·1450.00,·Change:·470.00↵
   D6:·1023.00,·Change:·273.00↵
Total:·10128.00,·Change:·1578.00
Average·sales:·1688.00
Division·with·highest·sales:4

这是我的代码:

我的代码

public static void main(String[] args) {
    int divs = 6;
    int qtrs = 4;
    double errorCheck;

    double[][] sales = new double[divs][qtrs];
    double[] qtrsales = new double[qtrs];

    int highestDiv = 0;
    int[] highestDivi = new int[qtrs];

    Scanner keyboard = new Scanner(System.in);

    for (int div = 0; div < divs; div++) {
        for (int qtr = 0; qtr < qtrs; qtr++) {
            System.out.printf("Enter sales figures for division %d, quarter %d:", (div + 1), (qtr + 1));
            errorCheck = keyboard.nextDouble();
            while (errorCheck < 0) {
                System.out.printf("Enter sales figures for division %d, quarter %d:", (div + 1), (qtr + 1));
                errorCheck = keyboard.nextDouble();
            }
            sales[div][qtr] = errorCheck;
        }

    }

    for (int qtr = 0; qtr < 4; qtr++) {
        System.out.printf("Q%d:\n", (qtr + 1));

        for (int div = 0; div < divs; div++) {
            qtrsales[qtr] += sales[div][qtr];
            System.out.printf("\tD%d: %.2f\n", (div + 1), sales[div][qtr]);
        }

        for (int qtrS = 0; qtrS < 1; qtrS++) {
            System.out.printf("Total:" + qtrsales[qtr] + ", Change:");
            System.out.printf("Average sales:" + (qtrsales[qtr] / divs));
        }

        for (int div = 0; div < 1; div++) {
            highestDiv = 0;
            if (sales[highestDiv][qtr] < sales[(div + 1)][qtr]) {
                highestDiv = (div + 1);
            }
            highestDivi[qtr] = highestDiv;

            System.out.println("Division with the highest sales:" + highestDivi[qtr]);
            }
        }

    }

}

1 个答案:

答案 0 :(得分:0)

所以这是我认为你想要的输出:

Q1:
    D1: 1234.45
    D2: 1232.54
    D3: 23987.54
    D4: 1233.56
    D5: 234.56
    D6: 1234.45
Total: 29157.10
Average sales: 4859.52
Division with the highest sales: 3
Q2:
    D1: 234.56
    D2: 1234.45
    D3: 1232.54
    D4: 23987.54
    D5: 1233.56
    D6: 234.56
Total: 28157.21 (change: 28157.21)
Average sales: 4692.87
Division with the highest sales: 4
Q3:
    D1: 1233.56
    D2: 234.56
    D3: 1234.45
    D4: 1232.54
    D5: 23987.54
    D6: 1233.56
Total: 29156.21 (change: 29156.21)
Average sales: 4859.37
Division with the highest sales: 5
Q4:
    D1: 23987.54
    D2: 1233.56
    D3: 234.56
    D4: 1234.45
    D5: 1232.54
    D6: 23987.54
Total: 51910.19 (change: 51910.19)
Average sales: 8651.70
Division with the highest sales: 1

重要提示:如果那不是您想要的,那么我已经设法在以下方向上失败了,您可能不应该听我说的任何其他事情。

通过进行一些小的改动来获得这个输出。当然,我不会把它们交给你(那将为你做功课,为此我需要向你收取过高的金额)所以相反我只是指出你朝着正确的方向前进。

首先,有一些代码:

for (int qtrS = 0; qtrS < 1; qtrS++)

仔细研究这段代码并发现它实际上在做什么。我会给你一个提示:它不一定是错误,但你可以采取一些措施来改进它。

你有一个类似的循环:

for (int div = 0; div < 1; div++)

仔细研究这个问题 - 它似乎与前一个问题相同,但事实并非如此。一旦你解决了这个谜题,你剩下的问题就会更加清晰。 (注意:如果您的修复程序导致您的程序崩溃 - 很好。继续前进,您就会走上正轨。)

此外,我想为最后一个循环提供以下建议:

您的数据使用从零开始的索引。看看你的代码,你已经知道了。在某些情况下,您的输出是基于一个的(您打印Q1,而不是Q0)。再看一下你的代码,你已经知道了。我的建议是如何处理这种索引差异。具体来说,在为用户打印输出时,始终使用从零开始的索引索引数据,并且仅为+ 1索引编制索引。

现在......关于改变计算。如果您不知道如何做某事,请尝试以非常清晰和准确的方式向自己解释问题(比如编写程序,但没有语言语法,数组索引和所有其他复杂的mumbo-jumbo的开销。如果你这样做,可能听起来像这样:

&#34;我需要计算2-4个季度的变化。这意味着我需要为每个季度(Q2,Q3,Q4)打印更改。更具体地说,我需要三个&#34;更改值&#34;。如何计算变更值?从四分之一开始,并确定下一个变化多少?这只是一个减法。所以我真正需要的是找到一种方法来获得这两个值(每个季度),以便我可以执行该减法。哦,我必须确保只针对那些季度(2-4)。&#34;

请记住,诀窍是在车内与自己说话时摇头,这样人们就会认为你一直在唱歌。

祝你好运。