- 康康map
-
首先,看你如何取日期和数据,如果是按日期取,你从1月1日开始往后每天取。
取到第一个日期是周日的,开始计数,计7天,计算一次。
顺序往下再取七天,算一次,如此就可以。
另外,如果你的数据是一个当年的天数,比如第xx天(假设数据是xx行对应的,就可以这样)
你可以先计算离1月1日最近的1月的周日,假设是1月5日周日
那以后的所有行都减去5,然后对7求余,就能得出是周几
那么还是一样的,从求余0开始到求余为6就是一个周期,用来取数和计算
- clou
-
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args){
List<Float> pricelist=new ArrayList<Float>();
Random ran=new Random();
//测试价格数据
for(int i=0;i<160;i++){
pricelist.add(ran.nextInt(10)+ran.nextFloat()*5);
}
//平均价格纪录列表
List<PriceItem> averList=new ArrayList<PriceItem>();
Calendar calender = Calendar.getInstance();
//开始结束日期
int startYear=2012;
int startMonth=1;
int startDay=1;
int endYear=2012;
int endMonth=5;
int endDay=31;
calender.set(endYear, endMonth-1,endDay);
Date endDate=calender.getTime();
calender.set(startYear, startMonth-1,startDay);
Date staryDate=calender.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int week=calender.get(Calendar.WEEK_OF_YEAR);
System.out.println("统计开始日期:"+sdf.format(staryDate));
System.out.println("统计截止日期:"+sdf.format(endDate));
Date currDate=staryDate;
float weekTotal=0f;
int dayCount=0;
int dayOfWek=calender.get(Calendar.DAY_OF_WEEK);
System.out.println("第一天是这一周的第"+dayOfWek+"天");
int index=0;
while(!endDate.before(currDate)){
weekTotal+=pricelist.get(index);
dayCount++;
calender.add(Calendar.DAY_OF_YEAR, 1);
currDate=calender.getTime();
dayOfWek++;
if(dayOfWek>7){
dayOfWek=1;
averList.add(new PriceItem(week,weekTotal/dayCount));
dayCount=0;
week++;
weekTotal=0;
}
index++;
}
if(dayOfWek>1){
averList.add(new PriceItem(week,weekTotal/dayCount));
}
//显示结果
for(int i=0;i<averList.size();i++){
System.out.println(averList.get(i));
}
}
}
class PriceItem{
int week;
float averagePrice;
public PriceItem(){
}
public PriceItem(int pWeek,float pPrice){
this.week=pWeek;
this.averagePrice=pPrice;
}
public int getWeek() {
return week;
}
public void setWeek(int week) {
this.week = week;
}
public float getAveragePrice() {
return averagePrice;
}
public void setAveragePrice(float averagePrice) {
this.averagePrice = averagePrice;
}
public String toString(){
return "第"+week+"周的平均价格:"+averagePrice;
}
}
不知道可否呢,前提是你的文本里每天都有价格,是连续的
- 牛云
-
先使用查询语句 获得结果集,然后利用迭代器获得集合中的价格的和 ,然后除以天数就可以了