问题引入
某公司从2000年开始,连续三年的销售额如下:
double[][] revenues= {
{56.4, 69.4, 67.2, 65.6, 65.2, 64.4, 66.7, 67.4, 70.2, 70.4, 78.7, 79.4},
{76.2, 88.3, 87.5, 90.2, 85.9, 78.0, 88.4, 89.2, 88.4, 86.9, 86.3,90.4},
{95.3, 94.5, 90.2, 95.0, 97.2, 97.1, 95.1, 90.2, 95.3, 98.2, 92.3, 95.9}
};
请写使用函数按顺序完成以下功能:
1)分别计算三年的平均销售额,并得到一个新的三个元素的平均销售额数组。
2)获取平均销售额最高的哪个年度。
3)合并三个年度的销售额,得到一个一维的销售额数组。
4)统计各个销售额段的月份数。(50-60,60-70,70-80,80-90,90-100)。
5)根据给定的年份和月份,获取销售额。
6)查找最大销售额对应的年份和月份。
代码实现
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
double[][] revenues = {
{56.4, 69.4, 67.2, 65.6, 65.2, 64.4, 66.7, 67.4, 70.2, 70.4, 78.7, 79.4},
{76.2, 88.3, 87.5, 90.2, 85.9, 78.0, 88.4, 89.2, 88.4, 86.9, 86.3,90.4},
{95.3, 94.5, 90.2, 95.0, 97.2, 97.1, 95.1, 90.2, 95.3, 98.2, 92.3, 95.9}
};
//1.平均销售额数组
double[] averageRevenues = new double[3];
average(averageRevenues,revenues);
//2.平均销售额最高的年度
maxAverage(averageRevenues);
//3.合并三个年度的销售额,得到一个一维的销售额数组
double[] revenuesSum = new double[1];
mergeRevenues(revenuesSum,revenues);
//4.销售额段月份数
monthRevenues(revenues);
//5.根据给定的年份和月份,获取销售额
getRevenues(revenues);
//6.查找最大销售额对应的年份和月份
getYearMonth(revenues);
}
//1.平均销售额数组
public static void average(double[] averageRevenues,double[][] revenues){
for (int i = 0; i < revenues.length; i++) {
double groupSum = 0;
for (int j = 0; j < revenues[i].length; j++) {
groupSum = groupSum + revenues[i][j];
}
averageRevenues[i] = (groupSum/12); //求每一年的平均销售额
}
}
//2.平均销售额最高的年度
public static void maxAverage(double[] averageRevenues){
double max = averageRevenues[0];
int year = 0;
for (int i = 0; i < averageRevenues.length; i++) {
if(max < averageRevenues[i]){
max = averageRevenues[i];
year = i;
}
}
System.out.println("平均销售额最高的年度为:200" + year);
}
//3.合并三个年度的销售额,得到一个一维的销售额数组
public static void mergeRevenues(double[] revenuesSum,double[][] revenues){
double sum = 0;
for (int i = 0; i < revenues.length; i++) {
for (int j = 0; j < revenues[i].length; j++) {
sum += revenues[i][j];
}
}
revenuesSum[0] = sum; //三个年度的销售额总和
}
//4.销售额段月份数
public static void monthRevenues(double[][] revenues){
int sum1 = 0,sum2 = 0,sum3 = 0, sum4 = 0, sum5 = 0;
for (int i = 0; i < revenues.length; i++) {
for (int j = 0; j < revenues[i].length; j++) {
if(revenues[i][j] >= 50 && revenues[i][j] < 60){
sum1++;
}else if(revenues[i][j] >= 60 && revenues[i][j] < 70){
sum2++;
}else if(revenues[i][j] >= 70 && revenues[i][j] < 80){
sum3++;
}else if(revenues[i][j] >= 80 && revenues[i][j] < 90){
sum4++;
}else if(revenues[i][j] >= 90 && revenues[i][j] <= 100){
sum5++;
}
}
}
System.out.println("销售额在50-60之间的月份有" + sum1 +"个," + "销售额在60-70之间的月份有" + sum2 +"个," +
"销售额在70-80之间的月份有" + sum3 +"个," + "销售额在80-90之间的月份有" + sum4 +"个," +
"销售额在90-100之间的月份有" + sum5 +"个");
}
//5.根据给定的年份和月份,获取销售额
public static void getRevenues(double[][] revenues){
Scanner input = new Scanner(System.in);
System.out.println("请输入年份:");
int year = input.nextInt();
System.out.println("请输入月份:");
int month = input.nextInt();
System.out.println(year + "年" + month + "月的销售额为:" + revenues[year - 2000][month - 1]);
}
//6.查找最大销售额对应的年份和月份
public static void getYearMonth(double[][] revenues){
int year = 0;
int month = 0;
double max = revenues[0][0];
for (int i = 0; i < revenues.length; i++) {
for (int j = 0; j < revenues[i].length; j++) {
if(max < revenues[i][j]){
max = revenues[i][j];
year = i;
month = j;
}
}
}
System.out.println("最大销售额" + max + "对应的年份为:200" + year + ",对应的月份为:" + (month + 1));
}
}