Day11【练习题】
1.
Calendar类的使用:请通过Calendar类的操作获得
1) 昨天的日期 (假设当前日期是 2008年04月28日,则昨天是2008年04月27日)
2) 本周的第一天 (2008年04月27日)
3) 上周的第一天 (2008年04月20日)
4) 本月的第一天 (2008年04月01日)
5) 上月的第一天 (2008年03月01日)
public class Exercise {
public static void main(String[] args)throws Exception{
//假设当前日期是 2008年04月28日
String date="2008 年 04 月 28 日";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日");
Date date1=sdf.parse(date);
Calendar ss=Calendar.getInstance();
ss.setTime(date1);
//今天的日期是:
Date date2=ss.getTime();
System.out.println("今天的日期是:"+sdf.format(date2));
//昨天的日期
ss.add(Calendar.DATE,-1);
Date year=ss.getTime();
System.out.println("昨天的日期是: "+sdf.format(year));
//本周的第一天:
int aa=ss.get(Calendar.DAY_OF_WEEK);
ss.add(Calendar.DATE,-aa+1);
Date qq=ss.getTime();
System.out.println("本周的第一天:"+sdf.format(qq));
//上周的第一天:
ss.add(Calendar.WEEK_OF_MONTH,-1);
Date Week=ss.getTime();
System.out.println("上周的第一天:"+sdf.format(Week));
//本月的第一天 (2008 年 04 月 01 日)
int dayofMonth=ss.get(Calendar.DAY_OF_MONTH);
ss.add(Calendar.DATE,-dayofMonth+1);
Date fristDay=ss.getTime();
System.out.println("本月的第一天: "+sdf.format(ss.getTime()));
//上月的第一天 (2008 年 03 月 01 日)
ss.add(Calendar.MONTH,-1);
System.out.println("上月的第一天:"+sdf.format(ss.getTime()));
}
}
2. 请用代码实现:获取当前的日期,并把这个日期转换为指定格式的字符串,如
2088-08-08 08:08:08。
Date ff=new Date();
DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
System.out.println(sdf.format(ff));
3. 使用 SimpleDateFormat 类,把 2018-03-04 转换为 2018 年 03 月 04 日。
DateFormat srg=new SimpleDateFormat("yyyy-MM-dd");
DateFormat srf=new SimpleDateFormat("yyyy年MM月dd日");
Date ss=srg.parse("2018-03-04");
System.out.println(srf.format(ss));
4. 计算一个人从出生到现在活了多少天??
1.如何把用户输入的日期,转换成Date类型
2.解析字符串到日期
3.如何获取日期的毫秒值
4.用当前系统时间的毫秒值减去出生日期的毫秒值
public class Exercise3 {
public static void main(String[] args)throws Exception {
//接收键盘输入
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的日期:——>格式为yyyy--MM--dd");
String srg=sc.nextLine();
//将字符串解析为Date对象
DateFormat ss=new SimpleDateFormat("yyyy-MM-dd");
Date srf=ss.parse(srg);
long start=srf.getTime();//将date对象转换为当前所对应的毫秒值;
//long end=new Date().getTime();
// 获取当前系统的毫秒值;
long end=System.currentTimeMillis();
//结束减去开始
long k=end-start;
//把毫秒转换为天(k/1000/60/60/24 除以1000得到秒,除以60 得到分 除以60 得到小时,除以24得到天了
if(k<0){
System.out.println("还没有出生");
}else{
System.out.println("李文杰童学活了"+k/1000/60/60/24+"天");
System.out.println("李文杰童学活了"+k/1000/60/60/24/365+"年");
}
}
}
5. 用程序判断 2018 年 2 月 14 日是星期几。
public class Exercise4 {
public static void main(String[] args)throws Exception{
String G = "2018年02月14日";
DateFormat srg = new SimpleDateFormat("yyyy年MM月dd日");
Date ss = srg.parse(G);
//创建日期类
Calendar SFG = Calendar.getInstance();
//把日历转换为date 格式
SFG.setTime(ss);//从新设置值
//判断是星期几
int date = SFG.get(Calendar.DAY_OF_WEEK);
System.out.println(date);
Wday(date);//调用
}
public static void Wday(int date) {
switch (date) {
case 1:
System.out.println("星期日");
break;
case 2:
System.out.println("星期一");
break;
case 3:
System.out.println("星期二");
break;
case 4:
System.out.println("星期三");
break;
case 5:
System.out.println("星期四");
break;
case 6:
System.out.println("星期五");
break;
case 7:
System.out.println("星期六");
break;
}
}
}
//星期三
6. 分别使用 String 的+=和 StringBuilder 的 append 方法对字符串做 100000 次拼接,计算String 拼接 100000 次花费时间与 StringBuilder 拼接 100000 次所花费时间并打印。
long start=System.currentTimeMillis();
String ss="liwenjie";
for(int i=0;i<10000;i++){
ss+=i;
}
long end=System.currentTimeMillis();
System.out.println("耗时:"+(end-start)+"毫秒");// 312毫秒
long start=System.currentTimeMillis();
StringBuilder builder=new StringBuilder("liwenjie");
for(int j=0;j<10000;j++){
builder.append("李文杰");
}
long end=System.currentTimeMillis();
System.out.println(builder);
System.out.println("耗时:"+(end-start)+"毫秒");// 10毫秒
7(1)定义数字字符串数组{"010","3223","666","7890987","123123"};
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相
等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出;
(3)如:010 是对称的,3223 是对称的,123123 不是对称的;
(4)最终打印该数组中对称字符串的个数。
public class Exercise6 {
public static void main(String[] args) {
String[]arry={"010","3223","666","7890987","123123","123123 "};
StringBuilder ss=null;
int count=0;
for(String srg:arry){
ss=new StringBuilder(srg);
if(ss.reverse().toString().equals(srg)){
count++;
System.out.println(srg+"是对称的");
}else{
System.out.println(srg+"是不对称的");
}
}
System.out.println(count+"次");
}
}
8. 十、分析以下需求,并用代码实现:
(1)打印由 7,8,9 三个数组成的三位数,要求该三位数中任意两位数字不能相同;
(2)打印格式最后的三位数字以空格分隔,如 789 798 879 897 978 987。
public class Exercise8 {
public static void main(String[] args) {
String ss="789";
StringBuilder builder=new StringBuilder();
for(int i=0;i<3;i++){
for(int j=0;j
builder.append(ss.charAt(j));
}
if(i!=2){
builder.append(" ");
}
ss=ss.substring(1).concat(ss.substring(0,1));
}
ss=builder.toString()+" "+builder.reverse().toString();
System.out.println(ss);
}
}
//运行的结果:
//789 897 978 879 798 987