今日,关于日期类的各种应用场景和解题思路
//问题 ;输入年月,输出该月所有的工作日和周末
//解题思路1 设置对象,日历对象,scanner对象;
// 通过cal获取cal的值
//通过sc对象获取应该需要的值,年月
// 通过cal的set构造方法,对日期值进行改变
//通过for每个月的每一天;
//通过设置条件来得到输出
package week.day4;
import java.lang.annotation.ElementType;
import java.util.Calendar;
import java.util.Scanner;
public class homework {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calendar cal = Calendar.getInstance();
int[] workday = new int[30];
int[] relaxday = new int[30];
System.out.println("请输入年份");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
cal.set(Calendar.YEAR,year);
cal.set(Calendar.MONTH,month);
for (int i = 1; i < cal.getActualMaximum(Calendar.DATE); i++) {
cal.set(Calendar.DATE,i);
int week = cal.get(Calendar.DAY_OF_WEEK);
if (week==1||week==7) {
sb.append(i+"\t");
}
else {
sb2.append(i+"\t");
}
}
System.out.println(sb);
System.out.println(sb2);
}
}
2
//问题思路 假设2022年12月1日起,开始执行"三天打鱼两天晒网"计划。输入一个新的日期,输出这天该打鱼
// 还是晒网
//解题思路
//1,通过SimpleDateFormat创建对象,来转格式,
//2创建Scacnner对象
//3获取输入的年月日
//4计算相差多少值
//5通过对5,取余数,来判断是三天还是俩天,
public class home2 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sd = new SimpleDateFormat("yyy/MM/dd");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个日期");
String input = sc.next();
String longnum="2022/12/00";
Date date1= sd.parse(input);
Date date2 =sd.parse(longnum);
long l = date2.getTime()-date1.getTime();
long day = Math.abs(l)/1000/3600/24;
int Day = (int)day;
System.out.println(day);
switch (Day%5)
{
case 1:
case 2:
case 3:
System.out.println("您输入的日期是"+input+"今天是打渔日");
break;
case 4:
case 0:
System.out.println("您输入的日期是"+input+"今天是晒网日");;
}
}
}
3
实现“员工入职记录”
添加员工时输入姓名、性别、部门、职位,自动记录入职时间
输出员工信息时,输出所有
解题思路
创建scanner对象获取输入
创建StrBuilder 获取对象,来存员工对象
创建Calendar对象来获取当前日期值
public class home3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
Calendar cal = Calendar.getInstance();
int year= cal.get(Calendar.YEAR);
int month= cal.get(Calendar.YEAR);
int day= cal.get(Calendar.YEAR);
while (true) {
System.out.println("欢迎登入员工入职系统请选择");
System.out.println("1,员工信息录入" + "\n" + "2,员工信息查询");
int num =sc.nextInt();
switch (num) {
case 1:
System.out.println("请输入姓名");
sb.append(sc.next()+ "\t");
System.out.println("请输入性别");
sb.append(sc.next() + "\t");
System.out.println("请输入部门");
sb.append(sc.next() + "\t");
System.out.println("请输入职位");
sb.append(sc.next() + "\t");
sb.append(year+"年"+month+"月"+day+"日"+"\n");
break;
case 2:
System.out.println(sb);
}
}
}
}
今日总结,今天学习的类的方法很多,但是在很多场景也很实用,就像第一题的存取对象是,如果按照一般的思路的话,创建数组时.我们并不知晓我们的数组要设定多长,调用时也相对麻烦,会浪费系统资源,而采用可变字符串时,就极大的减少了我们的时间,还省去了空间大小的问题;
而第二题时,刚开始在设置固定日期初始值是2022/12/01/,但是经过运算的时候,发现相减出来的并不是开始的时间,而是俩个日期相差的时间,所以在运算的时候要把默认的初始日期提前一天,才能正确输出
以往的题,都是根据做一步,在想下一步,但是呢,有时候做着做着就忘记自己到了哪一步,
今天尝试了,先分析问题,然后再想一想问题流程,然后通过记事本写下来
最后根据所写的内容再一步步的执行,会发现解决问题的复杂处理难度高时,通过这一方法,我也能心里有个底,知道没一步和下一步,总体也节约了很多敲代码的时间;以上O.o.加油