以下是我个人参考别人的代码进行修改的程序,感觉还有点冗余,请高手们对我的代码进行修改,能尽量缩减就尽量,谢谢!
按照提问的要求,还有就是能否在比较深奥的代码后面加上注释,方便本人理解。
如果直接按回车键,就提示用户将输出当天是星期几,并输出当天星期几。
谢谢各位!import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.io.*;public class ShowDay
{
Date now=new Date();
public static void main(String[] args) throws IOException
{
System.out.println("请输入一个日期以判断这一天是星期几,例如:20070809。");
System.out.println("不输入直接按Enter键则判断当日为星期几:");
BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );
String dates = cin.readLine();
DateFormat df = new SimpleDateFormat("yyyyMMdd");//日期格式化辅助类 
Date d;
try

d = df.parse(dates);//格式化日期 
String dateStr=(d.getYear()+1900)+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日";
switch(d.getDay())
{
case '1':
System.out.println("日期:[" + dateStr + "] 是星期一。");
case '2':
System.out.println("日期:[" + dateStr + "] 是星期二。");
case '3':
System.out.println("日期:[" + dateStr + "] 是星期三。");
case '4':
System.out.println("日期:[" + dateStr + "] 是星期四。");
case '5':
System.out.println("日期:[" + dateStr + "] 是星期五。");
case '6':
System.out.println("日期:[" + dateStr + "] 是星期六。");
default:
System.out.println("日期:[" + dateStr + "] 是星期日。");
}
}
catch (ParseException e)
{
e.printStackTrace();
}

}

解决方案 »

  1.   

    帮你全部改好了.import   java.text.DateFormat;   
    import   java.text.ParseException;   
    import   java.text.SimpleDateFormat;   
    import   java.util.Date;   
    import   java.io.*; public   class   ShowDay 

    public   static   void   main(String[]   args)   throws   IOException 
    {
    String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    System.out.println("请输入一个日期以判断这一天是星期几,例如:20070809。"); 
    System.out.println("不输入直接按Enter键则判断当日为星期几:"); 
    BufferedReader   cin   =   new   BufferedReader(   new   InputStreamReader(   System.in   )   ); 
    String   dates   =   cin.readLine();
    Date   d=null;
    DateFormat   df   =   new   SimpleDateFormat("yyyyMMdd");//日期格式化辅助类 
    if(dates.equals("")){
    d=new Date();     //如果输入为空,就取今天日期   
    }
    else{
    try{
    d   =   df.parse(dates);//格式化日期 
    }catch(ParseException   e){
    e.printStackTrace();
    }  
    }
    String   dateStr=(d.getYear()+1900)+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日";
    System.out.println(d.getDay());
    for(int i=0;i<str.length;i++){
    if(d.getDay()==(i))    //根据取出来的数判断取数组下标
    {
    System.out.println("日期:["   +   dateStr   +   "]   是"+str[i]);
    }
    }

    }   
    }
      

  2.   

    如果是jdk1.5以上,可以这样写.import   java.text.*;       
    import   java.util.*;
    public   class   ShowDay 

    public   static   void   main(String[]   args)   throws   Exception 
    {
    String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    System.out.println("请输入一个日期以判断这一天是星期几,例如:20070809。"); 
    System.out.println("不输入直接按Enter键则判断当日为星期几:");
    Scanner s=new Scanner(System.in);
    String   dates=s.nextLine();
    Date   d=null;
    DateFormat   df   =   new   SimpleDateFormat("yyyyMMdd");//日期格式化辅助类 
    if(dates.equals("")){
    d=new Date();     //如果输入为空,就取今天日期   
    }
    else{
    d=df.parse(dates);//格式化日期  
    }
    String   dateStr=(d.getYear()+1900)+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日";
    for(int i=0;i<str.length;i++){
    if(d.getDay()==(i))    //根据取出来的数判断取数组下标
    {
    System.out.println("日期:["   +   dateStr   +   "]   是"+str[i]);
    }
    }

    }   
    }
      

  3.   

    怎么总是不用系统已经提供的方法呢.获取月份不是这么写的...
    Calendar   cal   =   Calendar.getInstance(); 
    cal.setTime(date);//设置日期 
    System.out.println(cal.getDisplayName(Calendar.MONTH,   Calendar.SHORT,   Locale.CHINESE));//十二月 
    System.out.println(cal.getDisplayName(Calendar.MONTH,   Calendar.SHORT,   Locale.US));//Dec String   dateStr=(d.getYear()+1900)+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日"; 
    //换成
    new   SimpleDateFormat("yyyy年MM月dd日").format(date);//
    好不好?
      

  4.   

    2楼,我用的是J2SDK1.4.2.16,我试试看能不能用上。
    3楼,谢谢你的批评!用你这个方法似乎更简便些,可我不知道如何应在程序里,可否给点提示?我不知道还有个插入源代码的设置,给你们造成诸多不便。谢谢!
      

  5.   

    我一直试着将Theface的代码用到程序中,可是本人技术有限,一直无法将这个系统自带的方法用好。请赐教!谢谢!cursor_wang的第一次的代码运行通过,在原有的代码修改得更简洁了。谢谢!
    第二次的代码,因为需要JDK1.5以上,所以没办法运行。不过还是谢谢你!
    我想过了,如果还要将一个或多个空格过滤掉并通知用户再次输入的话,
    也要将字母,特殊符号,以及日期的正确表示等都处理好。很显然,我现在水平还没达到。
    所以,默认用户输入正确的日期或者按回车键。
    个人也觉得DateStr这个字符串实在太冗长了,可就是想不到办法解决!
    请大家多多帮忙!在此谢过!
      

  6.   

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;public class CalendarTest {    public static void main(String[] args) {
            boolean b = true;        
            while(b) {
                System.out.println("请输入一个日期以判断这一天是星期几,例如:20070809。");
                System.out.print("不输入直接按Enter键则判断当日为星期几:");
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                try {
                    String dateStr = br.readLine();
                    Date date = null;
                    SimpleDateFormat sdf = null; 
                    if(dateStr.trim().length() != 0) { 
                        sdf = new SimpleDateFormat("yyyyMMdd");
                        date = sdf.parse(dateStr);
                    }else{
                        date = new Date();
                    }
                    b = false;
                    sdf = new SimpleDateFormat("\n日期:[yyyy年MM月dd日]是EEEE", Locale.CHINESE);
                    System.out.println(sdf.format(date));                
                } catch (IOException e) {
                    System.out.println("\nERROR: 数据读取错误,请重新输入...");                
                } catch (ParseException e) {
                    System.out.println("\nERROR: 输入的日期格式不正确,应为:yyyyMMdd,请重新输入...");
                }
            }
        }
    }
      

  7.   

    谢谢两位,今天我实践出来了。似乎会比较简便。代码如下:import java.text.DateFormat;   
    import java.text.ParseException;   
    import java.text.SimpleDateFormat;   
    import java.util.Date;   
    import java.io.*; 
    import java.util.Calendar;public   class   ShowDayTest1

        public   static   void   main(String[]   args)   throws   IOException 
        {
            String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
            System.out.println("请输入一个日期以判断这一天是星期几,例如:20070809。"); 
            System.out.println("不输入直接按Enter键则判断当日为星期几:"); 
            BufferedReader   cin=new BufferedReader(new InputStreamReader(System.in)); 
            String   dates=cin.readLine();
            Date   d=null;
             
            DateFormat df=new SimpleDateFormat("yyyyMMdd");//日期格式化辅助类 
            if(dates.equals("")){
                d=new Date();     //如果输入为空,就取今天日期   
            }
            else{
                try{
                    d   =   df.parse(dates);//格式化日期 
                }catch(ParseException   e){
                    e.printStackTrace();
                }  
            }
            //获取当前时间日期
            //String date=new SimpleDateFormat("yyyy年MM月dd日").format(Calendar.getInstance().getTime());
            //System.out.println(date);
            String dateStr=new SimpleDateFormat("yyyy年MM月dd日").format(d);
            for(int i=0;i<str.length;i++){
                if(d.getDay()==(i))    //根据取出来的数判断取数组下标
                {
                    System.out.println("日期:["+dateStr+"]是"+str[i]);
                }
            }
        
        }   
    }
    多谢二位!
      

  8.   

    如果您采用的是JDK1.5或以上的版本的话,日期格式化输出就还要简单。
    把:
    sdf = new SimpleDateFormat("\n日期:[yyyy年MM月dd日]是EEEE", Locale.CHINESE);
    System.out.println(sdf.format(date));  
    换成,省得使用SimpleDateFormat了,不仅支持Date,还支持Calendar
    System.out.printf(Locale.CHINESE, "%n日期:[%tY年%<tm月%<td日]是%<tA%n", date);
      

  9.   

    嘿嘿,不好意思哈~~sdf = new SimpleDateFormat("\n日期:[yyyy年MM月dd日]是EEEE", Locale.CHINESE);当中只要一个“E”就够了。
      

  10.   

    谢谢bao110908 火龙果!你的程序更加符合我的要求。如果能多给点注释就更好了!
    多谢以上三位!我结帖后再自己研究。
      

  11.   

    如果您采用的是JDK1.5或以上的版本的话,日期格式化输出就还要简单。确实简单,只是基础得先学啊。这似乎有点像C语言。