我有一项任务要求我制作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]);
}
}
}
}
答案 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;
请记住,诀窍是在车内与自己说话时摇头,这样人们就会认为你一直在唱歌。
祝你好运。