输入一个日期判断是星期几,要判断输入的字符是否合法,输入一个或多个空格空格也有提示错误,然后请用户重新输入。

sacawen 2007-12-16 04:30:18
以下是我个人参考别人的代码进行修改的程序,感觉还有点冗余,请高手们对我的代码进行修改,能尽量缩减就尽量,谢谢!
按照提问的要求,还有就是能否在比较深奥的代码后面加上注释,方便本人理解。
如果直接按回车键,就提示用户将输出当天是星期几,并输出当天星期几。
谢谢各位!



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();
}
}
}
...全文
653 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sacawen 2007-12-17
  • 打赏
  • 举报
回复
如果您采用的是JDK1.5或以上的版本的话,日期格式化输出就还要简单。

确实简单,只是基础得先学啊。这似乎有点像C语言。
sacawen 2007-12-17
  • 打赏
  • 举报
回复
好的,谢谢啊!
sacawen 2007-12-17
  • 打赏
  • 举报
回复
谢谢bao110908 火龙果!你的程序更加符合我的要求。如果能多给点注释就更好了!
多谢以上三位!我结帖后再自己研究。
  • 打赏
  • 举报
回复
嘿嘿,不好意思哈~~

sdf = new SimpleDateFormat("\n日期:[yyyy年MM月dd日]是EEEE", Locale.CHINESE);


当中只要一个“E”就够了。
  • 打赏
  • 举报
回复
如果您采用的是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);
sacawen 2007-12-17
  • 打赏
  • 举报
回复
谢谢两位,今天我实践出来了。似乎会比较简便。代码如下:

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]);
}
}

}
}


多谢二位!
  • 打赏
  • 举报
回复
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,请重新输入...");
}
}
}
}
sacawen 2007-12-16
  • 打赏
  • 举报
回复
我一直试着将Theface的代码用到程序中,可是本人技术有限,一直无法将这个系统自带的方法用好。请赐教!谢谢!

cursor_wang的第一次的代码运行通过,在原有的代码修改得更简洁了。谢谢!
第二次的代码,因为需要JDK1.5以上,所以没办法运行。不过还是谢谢你!


我想过了,如果还要将一个或多个空格过滤掉并通知用户再次输入的话,
也要将字母,特殊符号,以及日期的正确表示等都处理好。很显然,我现在水平还没达到。
所以,默认用户输入正确的日期或者按回车键。
个人也觉得DateStr这个字符串实在太冗长了,可就是想不到办法解决!
请大家多多帮忙!在此谢过!
sacawen 2007-12-16
  • 打赏
  • 举报
回复
2楼,我用的是J2SDK1.4.2.16,我试试看能不能用上。
3楼,谢谢你的批评!用你这个方法似乎更简便些,可我不知道如何应在程序里,可否给点提示?

我不知道还有个插入源代码的设置,给你们造成诸多不便。谢谢!
Theface 2007-12-16
  • 打赏
  • 举报
回复
怎么总是不用系统已经提供的方法呢.获取月份不是这么写的...
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);//
好不好?
cursor_wang 2007-12-16
  • 打赏
  • 举报
回复
如果是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]);
}
}

}
}
cursor_wang 2007-12-16
  • 打赏
  • 举报
回复
帮你全部改好了.

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]);
}
}

}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧