比如:总天数是num,num不定的,假设num=6,今天是周二,我需要在一向列表上这样显示
 周四,周五,周六,周日,昨天,今天其中总天数和今天是星期几都是会变化的
周一到周日 我定义了个数组String[] days = {"周日","周一","周二","周三","周四","周五","周六"} ;
请问应该怎么算,求高手帮忙实现啊,谢谢!

解决方案 »

  1.   

    package com.demo;import java.util.Calendar;public class MainDemo {

    private static final String[] WEEKS = new String[]{"周日","周一","周二","周三","周四","周五","周六"}; /**
     * @param args
     */
    public static void main(String[] args) {
    MainDemo mainDemo = new MainDemo();
    mainDemo.print(6);
    }

    public void print(int num){
    StringBuffer sb = new StringBuffer();
    Calendar calendar = Calendar.getInstance();
    int iCurrentWeek = calendar.get(Calendar.DAY_OF_WEEK);
    if(num > 0){
    for(int i = 0;i < num;i++){
    if(i < num - 2){
    if(iCurrentWeek - (num - i) >= 0){
    sb.append(WEEKS[iCurrentWeek - (num - i)] + "\t");
    }else{
    sb.append(WEEKS[iCurrentWeek - (num - i) + WEEKS.length] + "\t");
    }
    }else{
    if(i == num - 2){
    sb.append("昨天\t");
    }else if(i == num - 1){
    sb.append("今天\t");
    }
    }
    }
    }
    System.out.println(sb.toString().trim());
    }
    }
    num=6: 周五 周六 周日 周一 昨天 今天
    num=8: 周三 周四 周五 周六 周日 周一 昨天 今天
    num=9: 周二 周三 周四 周五 周六 周日 周一 昨天 今天
      

  2.   


    public static void main(String[] args) {
    print(6);
    print(8);
    print(9);
    }private static String[] weeks = { null, "周日", "周一", "周二", "周三", "周四", "周五", "周六", };public static int lastDay(int dayOfWeek) {
    if (--dayOfWeek < Calendar.SUNDAY)
    return Calendar.SATURDAY;
    return dayOfWeek;
    }public static void print(int dayOfWeek, int num) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < num; i++, dayOfWeek = lastDay(dayOfWeek)) {
    switch (i) {
    case 0:
    sb.append("今天");
    break;
    case 1:
    sb.insert(0, "昨天 ");
    break;
    default:
    sb.insert(0, weeks[dayOfWeek] + " ");
    break;
    }
    }
    System.out.println(sb);
    }public static void print(int num) {
    print(Calendar.getInstance().get(Calendar.DAY_OF_WEEK), num);
    }