黑马程序员技术交流社区
标题:
大家帮我看看我的这个程序怎么改啊???
[打印本页]
作者:
高丽华
时间:
2014-1-3 16:58
标题:
大家帮我看看我的这个程序怎么改啊???
要求:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天.
package com.itheima;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Date;
public class tt{
public static void main(String[] args)throws Exception{
Scanner r=new Scanner(System.in);
String x=r.nextLine();
String regex="\\D";
String a[]=x.split(regex);
int y=Integer.parseInt(a[0]);
int m=Integer.parseInt(a[1]);
int d=Integer.parseInt(a[2]);
int n=d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1;
String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println("今天是:"+str[n%7]);
DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
Date date=fm.parse(x);
String str1 = String.format("%tj",date);
System.out.println("今天是这年的第"+str1+"天");
}
}
我这个程序的问题就是:这一天是星期几运行的不对;是一年中德第几天运行的还对。怎么修改啊??
作者:
午夜b'Boy
时间:
2014-1-3 17:15
建议用java.util.Calendar类获取代表日期的calendar对象来实现此功能;源码如下:
作者:
午夜b'Boy
时间:
2014-1-3 17:16
package com.itheima; import java.util.*; import java.io.*; public class Test9 { /**、 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, * 程序计算这一天是星期几,并且计算出是一年中的第几天。 * @param args * * 思路: * 1键盘录入; * 2通过Calendar类,建立实例对象,并设置其代表的日期为输入的日期 * 3通过此对象的方法,获取星期,及这天为一年的第几天; * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); String day=null; //日期正则表达式 String reg="\\d{4}-((0\\d)|\\d|(1[012]))-(\\d|([012]\\d)|(3[01]))"; while((day=bufr.readLine())!=null){ if(!day.matches(reg)){ bufr.close(); System.out.println("非yyyy-mm-dd格式,程序退出"); return; } method(day); } } //输入的字符串通过检查后的具体对象建立及取值 public static void method(String day){ String[] arr=day.split("-"); //取出字符串对应的年月日的int值; int[] ts=new int[3]; for(int i=0;i<3;i++){ ts[i]=Integer.parseInt(arr[i]); } //获取对象实例 Calendar cal=Calendar.getInstance(); //设置对象实例代表的日期为键盘输入的日期 cal.set(ts[0],ts[1]-1,ts[2]); //获取星期值 String week=getWeek(cal.get(cal.DAY_OF_WEEK)); //获取当前为一年中的第几天 int num=cal.get(cal.DAY_OF_YEAR); System.out.println(day+"这一天是"+week+",是一年中的第"+num+"天!"); } //通过数组拿对应int值代表的具体星期的中文形式; public static String getWeek(int num){ String[] arr={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; return arr[num-1]; } }
作者:
午夜b'Boy
时间:
2014-1-3 17:21
calendar类运用:DAY_OF_YEAR为其静态字段表示一年中的第几天:DAY_OF_WEEK为其静态字段表示星期;0为星期日1为星期一以此类推。。。
package com.itheima;
import java.util.*;
import java.io.*;
public class Test9 {
/**、 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,
* 程序计算这一天是星期几,并且计算出是一年中的第几天。
* @param args
*
* 思路:
* 1键盘录入;
* 2通过Calendar类,建立实例对象,并设置其代表的日期为输入的日期
* 3通过此对象的方法,获取星期,及这天为一年的第几天;
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String day=null;
//日期正则表达式
String reg="\\d{4}-((0\\d)|\\d|(1[012]))-(\\d|([012]\\d)|(3[01]))";
while((day=bufr.readLine())!=null){
if(!day.matches(reg)){
bufr.close();
System.out.println("非yyyy-mm-dd格式,程序退出");
return;
}
method(day);
}
}
//输入的字符串通过检查后的具体对象建立及取值
public static void method(String day){
String[] arr=day.split("-");
//取出字符串对应的年月日的int值;
int[] ts=new int[3];
for(int i=0;i<3;i++){
ts[i]=Integer.parseInt(arr[i]);
}
//获取对象实例
Calendar cal=Calendar.getInstance();
//设置对象实例代表的日期为键盘输入的日期
cal.set(ts[0],ts[1]-1,ts[2]);
//获取星期值
String week=getWeek(cal.get(cal.DAY_OF_WEEK));
//获取当前为一年中的第几天
int num=cal.get(cal.DAY_OF_YEAR);
System.out.println(day+"这一天是"+week+",是一年中的第"+num+"天!");
}
//通过数组拿对应int值代表的具体星期的中文形式;
public static String getWeek(int num){
String[] arr={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[num-1];
}
}
复制代码
作者:
taoge
时间:
2014-1-3 17:23
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
import java.util.Date;
public class TT{
public static void main(String[] args)throws Exception{
Scanner r=new Scanner(System.in);
String x=r.nextLine();
// String regex="\\D";
// String a[]=x.split(regex);
// int y=Integer.parseInt(a[0]);
// int m=Integer.parseInt(a[1]);
// int d=Integer.parseInt(a[2]);
// int n=d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1;
String[] str ={" ","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
//System.out.println("今天是:"+str[n%7]);
SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
Date date=fm.parse(x);
Calendar calendar = Calendar.getInstance();//获取Calendar对象
calendar.setTime(date);//设置Calendar为你输入的日期
System.out.println("今天是:"+str[calendar.get(Calendar.DAY_OF_WEEK)]);//看名字就知道了,一周中的第几天
// String str1 = String.format("%tj",date);
System.out.println("今天是这年的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天");
}
}
复制代码
作者:
汪伟楠
时间:
2014-1-5 14:03
我的做法如下:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
import java.util.Date;
class tt{
public static void main(String[] args)throws Exception{
Scanner r=new Scanner(System.in);
String x=r.nextLine();
DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
Date date=fm.parse(x);
String weeks[]={"","星期日","星期一","星期二","星期三","星期四",
"星期五","星期六"};
System.out.println("今天是"+weeks[fm.getCalendar().get(Calendar.DAY_OF_WEEK)]);
String str = String.format("%tj", date);
System.out.println("今天是这年的第"+str+"天");
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2