我正在编写一个程序,显示公司6个不同部门的季度销售额。试图获得销售额最高的部门
我大部分都在工作,但是当我尝试在每个季度显示销售额最高的部门时,它就不起作用。
编辑:我得到所有的输出正确读取,但我现在的问题是检查输入的数字是否> = 0,我试过如果语句和while循环,并做while循环,但我不能出来。
编辑2:我更新了代码以匹配我当前的代码。
import java.util.Scanner;
public class SalesByQuarter
{
public static void main(String[] args)
{
int divs = 6;
int qtrs = 4;
double totalSales = 0.0;
double errorCheck;
double[][] sales = new double[divs][qtrs];
Scanner keyboard = new Scanner(System.in);
System.out.println("This program will calculate the " +
"total sales of");
System.out.println("all the company's divisions. " +
"Enter the following sales data:");
System.out.println();
for (int div = 0; div < divs; div++)
{
for (int qtr = 0; qtr < qtrs; qtr++)
{
System.out.printf("Division %d, Quarter %d: $",
(div + 1), (qtr + 1));
errorCheck = keyboard.nextDouble();
sales[div][qtr] = errorCheck;
}
System.out.println();
}
if (errorCheck < 0)
{
System.out.println("Positive numbers only please!");
for (int div = 0; div < divs; div++)
{
for (int qtr = 0; qtr < qtrs; qtr++)
{
System.out.printf("Division %d, Quarter %d: $",
(div + 1), (qtr + 1));
errorCheck = keyboard.nextDouble();
sales[div][qtr] = errorCheck;
}
System.out.println();
}
}
else
{
for (int div = 0; div < divs; div++)
{
for (int qtr = 0; qtr < qtrs; qtr++)
{
totalSales += sales[div][qtr];
}
}
double[] divsales = new double[divs];
for (int div = 0; div < divs; div++)
{
for (int qtr = 0; qtr < qtrs; qtr++)
{
divsales[div] += sales[div][qtr];
}
System.out.printf("Division %d sales: $%,.2f\n", (div + 1), divsales[div]);
}
System.out.println();
for (int div = 1; div < divs; div++)
{
if ((divsales[div] - divsales[div - 1]) > 0)
{
System.out.printf("Division %d increase over its previous quarter: $%,.2f\n", (div + 1), divsales[div] - divsales[(div - 1)]);
}
else if ((divsales[div] - divsales[div - 1]) < 0)
{
System.out.printf("Division %d decrease from its previous quarter: $%,.2f\n", (div + 1), divsales[div] - divsales[(div - 1)]);
}
else
{
System.out.printf("Division %d had no increase or decrease from its previous quarter.\n", (div + 1));
}
}
System.out.println();
double[] qtrsales = new double[qtrs];
for (int div = 0; div < divs; div++)
{
for (int qtr = 0; qtr < qtrs; qtr++)
{
qtrsales[qtr] += sales[div][qtr];
}
}
for (int qtr = 0; qtr < qtrs; qtr++)
{
System.out.printf("Total sales for quarter: %d: $%,.2f\n", (qtr + 1), qtrsales[qtr]);
}
System.out.println();
for (int qtr = 0; qtr < qtrs; qtr++)
{
System.out.printf(" Average sale for quarter: %d: $%,.2f\n", (qtr + 1), (qtrsales[qtr]/divs));
}
System.out.println();
int highestDiv = 0;
int[] highestDivi = new int[qtrs];
for (int qtr = 0; qtr < qtrs; qtr++)
{
highestDiv = 0;
for (int div = 0; div < (divs - 1); div++)
{
if (sales[highestDiv][qtr] < sales[(div + 1)][qtr])
{
highestDiv = (div + 1);
}
}
highestDivi[qtr] = highestDiv;
}
for (int qtr = 0; qtr < qtrs; qtr++)
{
System.out.printf("Division %d had the highest sales in quarter %d\n", qtr + 1, highestDivi[qtr] + 1);
}
}
}
}
上一个'printf'文本使得它看起来像只打印分割数字而不打印其总销售额,但由于上面的行不是'highestDivi',所以保留销售值,例如:'highestDivi [qtr] =销售[div + 1] [qtr]'?或者我错过了什么? – 2015-04-01 23:39:07
你是对的,这就是我来这里寻求帮助的原因:/ – PrettyNovice 2015-04-01 23:41:42
对于初学者来说,你不需要一个数组来追踪最高值你只需要一个双变量(我们只关心我们正在工作的季度)。然后将分区号保存在一个int []中,您应该可以使其工作。但是,这些循环中的布尔逻辑没有任何意义,因此您需要仔细重新思考该逻辑需要完成的内容。 – 2015-04-01 23:48:11