java基礎練習題(day03)
阿新 • • 發佈:2021-01-14
技術標籤:java
-
類和物件
-
定義私有屬性:
String name;
int age;
String gender;
int salary;
Date hiredate;//入職時間 -
定義構造方法,以及屬性get,set方法.
-
定義toString方法,格式如: 姓名:張三,年齡:25,性別:男,薪資:5000,入職時間:2006-02-15
-
定義equals方法,要求只要名字相同,則認為內容一致。
-
-
日期相關(要求使用java8新日期API和Date分別實現一遍)
-
使用LocalDate輸出當前系統時間,以及3天后這一刻的時間
-
將當前系統時間以"yyyy-MM-dd HH:mm:ss"格式輸出
-
輸入某人生日,格式為"yyyy-MM-dd",輸出到現在為止經過了多少周。
-
輸入一個生產日期格式"yyyy-MM-dd",再輸入一個數字(保質期的天數)。
然後經過計算輸出促銷日期,促銷日期為:該商品過期日前2周的週三
-
-
實現時間的計算: 要求使用者輸入身份證號,若格式有誤,要求其重新輸入。然後根據身份證號碼輸出20歲生日所在周的週三的日期。
-
例如:
出生日期:1992-07-15。
20歲生日:2012-07-15
當週的週三為:2012-07-18
-
-
集合相關(要求使用Strem的API和非Strem分別實現一遍)
- 建立一個集合,存放字串"one",“two”,“three”
- 然後輸出該集合的元素個數。
- 然後輸出該集合是否包含字串"four"
- 然後輸出集合是否不含有任何元素
- 然後清空集合
- 然後輸出該集合的元素個數
- 然後輸出集合是否不含有任何元素
-
綜合練習
-
要求使用者首先輸入員工數量,然後輸入相應員工資訊,格式為:
name,age,gender,salary,hiredate
例如: 張三,25,男,5000,2006-02-15
每一行為一個員工資訊,然後將每個員工資訊解析成Emp物件。並存入到一個集合中。
在解析成Emp物件後要先檢視當前集合是否包含該員工,若包含則提示該用於已存在,
否則才存入集合。
然後輸出集合檢視每個員工資訊.
-
package day03;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 定義私有屬性:
* String name;
* int age;
* String gender;
* int salary;
* Date hiredate;//入職時間
*
* 定義構造方法,以及屬性get,set方法.
* 定義toString方法,格式如:
* 姓名:張三,年齡:25,性別:男,薪資:5000,入職時間:2006-02-15
*
* 定義equals方法,要求只要名字相同,則認為內容一致。
* @author Xiloer
*
*/
public class Emp {
private String name;
private int age;
private String gender;
private int salary;
private Date hiredate;
public Emp(String name, int age, String gender, int salary, Date hiredate) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
this.hiredate = hiredate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof Emp){
Emp emp = (Emp)obj;
return emp.name.equals(this.name);
}
return false;
}
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return "姓名:"+name+",年齡:"+age+",性別:"+gender+",薪資:"+salary+",入職時間:"+sdf.format(hiredate);
}
}
package day03;
import java.util.Date;
/**
* 使用LocalDate輸出當前系統時間,以及3天后這一刻的時間
* @author Xiloer
*
*/
public class Test01 {
public static void main(String[] args) {
Date date = new Date();
System.out.println("當前日期:"+date);
date.setTime(date.getTime()+1000*60*60*24*3);
System.out.println("3天后:"+date);
}
}
package day03;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 將當前系統時間以"yyyy-MM-dd HH:mm:ss"格式輸出
* @author Xiloer
*
*/
public class Test02 {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(now));
}
}
package day03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 輸入某人生日,格式為"yyyy-MM-dd",輸出到現在為止經過了多少周。
* @author Xiloer
*
*/
public class Test03 {
public static void main(String[] args) throws ParseException {
System.out.println("請輸入生日:");
Scanner scanner = new Scanner(System.in);
String birthStr = scanner.nextLine();
//將輸入的字串轉換為Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birth = sdf.parse(birthStr);
//當前系統時間
Date now = new Date();
//計算相差的時間
long time = now.getTime()-birth.getTime();
//換算為周
time/=1000*60*60*24*7;
System.out.println("經過了"+time+"周");
}
}
package day03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 輸入一個生產日期格式"yyyy-MM-dd",再輸入一個數字(保質期的天數)。
* 然後經過計算輸出促銷日期,促銷日期為:該商品過期日前2周的週三
* @author Xiloer
*
*/
public class Test04 {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入一個生產日期:");
String dateStr = scanner.nextLine();
System.out.println("請輸入一個保質期天數:");
int days = Integer.parseInt(scanner.nextLine());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//將生產日期轉換為Date
Date date = sdf.parse(dateStr);
//建立Calendar計算時間
Calendar calendar = Calendar.getInstance();
//表示生產日期
calendar.setTime(date);
//計算過期日
calendar.add(Calendar.DAY_OF_YEAR, days);
//計算過日期兩週前
calendar.add(Calendar.DAY_OF_YEAR, -14);
//設定為當週週三
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
//轉換為Date
date = calendar.getTime();
//輸出促銷日期
System.out.println("促銷日期:"+sdf.format(date));
}
}
package day03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 實現時間的計算: 要求使用者輸入身份證號,若格式有誤,要求其重新輸入。然後根據身份證號碼輸出20歲生日
* 所在周的週三的日期。
* 例如:
* 出生日期:1992-07-15。
* 20歲生日:2012-07-15
* 當週的週三為:2012-07-18
*
* @author Xiloer
*
*/
public class Test05 {
public static void main(String[] args) throws ParseException {
String regex = "\\d{15}(\\d{2}[0-9xX])?";
Scanner scanner = new Scanner(System.in);
//身份證號的字串
String id = "";
while(true){
System.out.println("請輸入身份證號:");
id = scanner.nextLine();
if(!id.matches(regex)){
System.out.println("請輸入正確的身份證號.");
}else{
break;
}
}
//擷取生日的部分
String birthStr = id.substring(6, 14);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date birth = sdf.parse(birthStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(birth);
//calendar.set(Calendar.MONTH,5);
calendar.add(Calendar.YEAR, 20);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
//將計算後的日期按格式輸出
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("日期為:"+sdf1.format(calendar.getTime()));
}
}
package day03;
import java.util.ArrayList;
import java.util.Collection;
/**
* 建立一個集合,存放字串"one","two","three"
* 然後輸出該集合的元素個數。
* 然後輸出該集合是否包含字串"four"
* 然後輸出集合是否不含有任何元素
* 然後清空集合
* 然後輸出該集合的元素個數
* 然後輸出集合是否不含有任何元素
* @author Xiloer
*
*/
public class Test06 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("one");
c.add("two");
c.add("three");
System.out.println("元素數量:"+c.size());
System.out.println("是否包含four:"+c.contains("four"));
System.out.println("是否是空集:"+c.isEmpty());
c.clear();
System.out.println("集合已清空");
System.out.println("元素數量:"+c.size());
System.out.println("是否是空集:"+c.isEmpty());
}
}
package day03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Scanner;
/**
* 要求使用者首先輸入員工數量,然後輸入相應員工資訊,格式為:
* name,age,gender,salary,hiredate
* 例如:
* 張三,25,男,5000,2006-02-15
* 每一行為一個員工資訊,然後將每個員工資訊解析成Emp物件。並存入到一個集合中。
* 在解析成Emp物件後要先檢視當前集合是否包含該員工,若包含則提示該用於已存在,
* 否則才存入集合。
* 然後輸出集合檢視每個員工資訊.
* @author Xiloer
*
*/
public class Test07 {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入員工數量:");
int num = Integer.parseInt(scanner.nextLine());
//建立一個集合用於儲存所有解析出來的員工資訊
Collection emps = new ArrayList();
//開始解析工作
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(int i=1;i<=num;){
System.out.println("請輸入第"+i+"個員工資訊");
String info = scanner.nextLine();
String[] data = info.split(",");
String name = data[0];
int age = Integer.parseInt(data[1]);
String gender = data[2];
int salary = Integer.parseInt(data[3]);
Date hiredate = sdf.parse(data[4]);
Emp emp = new Emp(name,age,gender,salary,hiredate);
if(emps.contains(emp)){
System.out.println("該員工已經存在!");
continue;
}
emps.add(emp);
i++;
}
System.out.println(emps);
}
}