2017-03-20 25 views
0

我,需要我做SalesByQtr java程序我已经得到了大多数做节目的分配,但我有几个问题有一些问题SalesByQtr分配

首先:我总处于显示为一个double,我知道我需要printf来添加一个小数位。 Average的情况也是如此。

二:我的最高销售部门是说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]); 
      } 
     } 

    } 

} 
+0

这个问题范围太广泛了。这是*问题和答案*网站 - 请注意*问题*是单数。你已经问了4个关于代码不同部分的单独问题。我建议你不要一下子解决所有问题,并专注于第一个问题。一旦你解决了这个问题,你可以转到第二个,等等。我们不会完成整个任务。 –

+0

在那个笔记上,尽量减少你的问题。您可以构建的最小代码段是什么,可以说明您的问题。这样做的行为将有助于您对代码进行模块化,并经常向您显示解决方案。 – Matt

回答

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)。再次看看你的代码,你已经知道这一点。我的建议是关于如何处理索引差异的一致性。具体而言,始终使用基于零的索引对数据进行索引,并在为用户打印输出时仅对这些索引进行索引。

现在...关于变化计算。如果你不知道该怎么做,试着用非常清晰准确的术语来解释这个问题(比如编写一个程序,但是没有语言语法,数组索引以及所有其他复杂的巨型超大规模的开销)。如果你可能听起来像这样:

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

请记住,诀窍就是在汽车中与自己交谈时轻轻一碰,这样人们就会觉得自己在跟着唱歌。

祝你好运。

+0

@paulin你的建议是非常好的和翔实的,我会试试看。我会看看我能否做到。 –

+0

如果这对你有效,不要忘记标记为答案。 – pauln