ITPUB??ì3
ITPUB论坛 » Java入门与认证版 » 请大家看下,为什么我的这个日历格式显示不对呢

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 请大家看下,为什么我的这个日历格式显示不对呢
离线 绿色的宝石



精华贴数 0
个人空间 0
技术积分 114 (15058)
社区积分 0 (1795935)
注册日期 2008-6-9
论坛徽章:0
      
      

发表于 2008-6-18 13:51 
请大家看下,为什么我的这个日历格式显示不对呢

import java.util.*;
public  class  C
{
        public static void main(String[] args)
        {  System.out.println("sun mon tue wed thu fri sat");
                   GregorianCalendar now= new GregorianCalendar(2008,4,7);
                GregorianCalendar now1= new GregorianCalendar(2008,4,7);
                int s=now.get(now.DAY_OF_MONTH); int y=now.get(now.MONTH);  int p=now.get(now.YEAR);
        int j=now.get(now.DAY_OF_WEEK);
               
                now.add(now.DAY_OF_MONTH,1-s);
        int f=now.get(now.DAY_OF_MONTH);
        int e=now.get(now.DAY_OF_WEEK);
         String u="";
if ( now.get(now.DAY_OF_MONTH)==now1.get(now1.DAY_OF_MONTH))
       u="?";
              switch(e)  
             { case 1 :  System.out.print(" "+1+u); break;
               case 2 : System.out.print("     "+1+u); break;  
               case 3 : System.out.print("         "+1+u); break;
               case 4 : System.out.print("             "+1+u); break;
               case 5 : System.out.print("                 "+1+u); break;
               case 6 : System.out.print("                     "+1+u); break;
               case 7 : System.out.println("                         "+1+u); break;
             }         

               
                for (int i=s-1;i>0 ;i--)
                {   
                        now.add(now.DAY_OF_MONTH,1);
                                       int q=now.get(now.DAY_OF_WEEK);
                                       int r=now.get(now.DAY_OF_MONTH);
         
                              String t="";
        if ( now.get(now.DAY_OF_MONTH)==now1.get(now1.DAY_OF_MONTH))
                t="?";
                if (r<=9)
            {  switch(q)  
             { case 1 : System.out.print(" "+r+t); break;     
               case 2 : System.out.print("   "+r+t); break;  
               case 3 : System.out.print("   "+r+t); break;
               case 4 : System.out.print("   "+r+t); break;
               case 5 : System.out.print("   "+r+t); break;
               case 6 : System.out.print("   "+r+t); break;//空格数量无法改变了,即使我把这里的空格改变成10个,在控制台上也不能变化,一直都是2个
               case 7 : System.out.println("   "+r+t); break;
            
             }
           }

             else
            {  switch(q)  
             { case 1 :   System.out.print(r); break;
               case 2 : System.out.print("  "+r+t); break;  
               case 3 : System.out.print("  "+r+t); break;
               case 4 : System.out.print("  "+r+t); break;
               case 5 : System.out.print("  "+r+t); break;
               case 6 : System.out.print("  "+r+t); break;
               case 7 : System.out.println("  "+r+t); break;
            
             }
                        }
                 
                }  
                    int m=30;
                  
                if ( (y+1)==1||(y+1)==3||(y+1)==5||(y+1)==7||(y+1)==8||(y+1)==10||(y+1)==12 )
                       m=31;
               
                   for (int w=s+1;w<=m;w++ )
                   {  now.add(now.DAY_OF_MONTH,1);
                                      int b=now.get(now.DAY_OF_WEEK);
                                int n=now.get(now.DAY_OF_MONTH);
                               switch(b)  
            { case 1 : System.out.print(n); break;
               case 2 : System.out.print("  "+n); break;  
               case 3 : System.out.print("  "+n); break;
               case 4 : System.out.print("  "+n); break;
               case 5 : System.out.print("  "+n); break;
               case 6 : System.out.print("  "+n); break;
               case 7 : System.out.println("  "+n); break;
            
             }


                   }
               
               
                       
               
        }
}



出现的问题是,日子后面加了“?”后,后面的日子的空格的数量不能改变了,问题代码我已经注释上了,我选的当前日期在这里是7后面加'?'了,但后面的空格数量不对,也不能改变,应该是3个空格,却只显示2个,而且往后的空格都一样,不能变化,谢谢了


只看该作者    顶部
离线 bozhi521
初级会员



精华贴数 0
个人空间 0
技术积分 18 (59774)
社区积分 0 (1222470)
注册日期 2006-12-22
论坛徽章:0
      
      

发表于 2008-6-18 16:37 
因为输出了日子后面有“?”的那一天后,程序会跳到下一个for循环去输出之后的日期,最后一个for循环里的空格数量都是2个


只看该作者    顶部
离线 绿色的宝石



精华贴数 0
个人空间 0
技术积分 114 (15058)
社区积分 0 (1795935)
注册日期 2008-6-9
论坛徽章:0
      
      

发表于 2008-6-18 17:42 


QUOTE:
原帖由 bozhi521 于 2008-6-18 16:37 发表
因为输出了日子后面有“?”的那一天后,程序会跳到下一个for循环去输出之后的日期,最后一个for循环里的空格数量都是2个

不是的,那个break语句是用来跳出SWITCH语句的,不是用来跳出循环体的,它只是跳出了开关语句,并不能跳到下个FOR语句中,你理解有出入,不过还是谢谢你了,呵呵,我是初学者,还得向大家多请教,呵呵


只看该作者    顶部
离线 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-18 21:58 
我运行了,可以有变化的


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 绿色的宝石



精华贴数 0
个人空间 0
技术积分 114 (15058)
社区积分 0 (1795935)
注册日期 2008-6-9
论坛徽章:0
      
      

发表于 2008-6-19 00:29 


QUOTE:
原帖由 it01 于 2008-6-18 21:58 发表
我运行了,可以有变化的

你是怎么运行的,我怎么不能变化呢,“7?”后面的数字之间的间隔都是2个空格,不是三个,而我定的是三个空格,你再仔细看看


只看该作者    顶部
离线 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-19 00:32 


QUOTE:
原帖由 绿色的宝石 于 2008-6-19 12:29 AM 发表

你是怎么运行的,我怎么不能变化呢,“7?”后面的数字之间的间隔都是2个空格,不是三个,而我定的是三个空格,你再仔细看看

在你标注的那行  修改空格数量后 , 控制台输入是有变化的

如果你想打印日历的话 用下面这个例子好了

package org.njupt;

import java.util.*;

public class Calendar {


        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("Sun   Mon   Tue   Wed   Thu   Fri   Sat");
                GregorianCalendar d=new GregorianCalendar();
               
                int today=d.get(d.DAY_OF_MONTH);
                int month=d.get(d.MONTH);
                d.set(d.DAY_OF_MONTH, 1);
                int weekday=d.get(d.DAY_OF_WEEK);
                //判断这个月的第一天是星期几
                for(int i=d.SUNDAY;i<weekday;i++)
                        System.out.print("   ");
                //开始打印1~31
                        do
                        {
                                int day=d.get(d.DAY_OF_MONTH);
                                System.out.printf("%3d",day);
                                if(day==today)
                                        System.out.print("*");
                                else
                                        System.out.print(" ");
                                if(weekday==d.SATURDAY)
                                        System.out.println("");
                                //当日期加一,day_of_week也加一
                                d.add(d.DAY_OF_MONTH,1);
                                weekday=d.get(d.DAY_OF_WEEK);
                        }while(d.get(d.MONTH)==month);
                       
                       
                        if(weekday!=d.SUNDAY)
                                System.out.println("");
       
       

        }

}


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 greenflute


精华贴数 0
个人空间 0
技术积分 7216 (178)
社区积分 162 (2636)
注册日期 2001-10-26
论坛徽章:15
现任管理团队成员ITPUB元老管理团队2007贡献徽章会员2007贡献徽章2008北京奥运纪念徽章:沙滩排球2008年新春纪念徽章
      

发表于 2008-6-19 02:24 



只看该作者    顶部
离线 绿色的宝石



精华贴数 0
个人空间 0
技术积分 114 (15058)
社区积分 0 (1795935)
注册日期 2008-6-9
论坛徽章:0
      
      

发表于 2008-6-19 08:23 


QUOTE:
原帖由 it01 于 2008-6-19 00:32 发表



在你标注的那行  修改空格数量后 , 控制台输入是有变化的

如果你想打印日历的话 用下面这个例子好了

package org.njupt;

import java.util.*;

public class Calendar {


        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("Sun   Mon   Tue   Wed   Thu   Fri   Sat");
                GregorianCalendar d=new GregorianCalendar();
               
                int today=d.get(d.DAY_OF_MONTH);
                int month=d.get(d.MONTH);
                d.set(d.DAY_OF_MONTH, 1);
                int weekday=d.get(d.DAY_OF_WEEK);
                //判断这个月的第一天是星期几
                for(int i=d.SUNDAY;i

呵呵,谢谢啦


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问