1. 程式人生 > 其它 >java基礎練習題(day03)

java基礎練習題(day03)

技術標籤:java

  1. 類和物件

    • 定義私有屬性:

      String name;
      int age;
      String gender;
      int salary;
      Date hiredate;//入職時間

    • 定義構造方法,以及屬性get,set方法.

    • 定義toString方法,格式如: 姓名:張三,年齡:25,性別:男,薪資:5000,入職時間:2006-02-15

    • 定義equals方法,要求只要名字相同,則認為內容一致。

  2. 日期相關(要求使用java8新日期API和Date分別實現一遍)

    • 使用LocalDate輸出當前系統時間,以及3天后這一刻的時間

    • 將當前系統時間以"yyyy-MM-dd HH:mm:ss"格式輸出

    • 輸入某人生日,格式為"yyyy-MM-dd",輸出到現在為止經過了多少周。

    • 輸入一個生產日期格式"yyyy-MM-dd",再輸入一個數字(保質期的天數)。

      然後經過計算輸出促銷日期,促銷日期為:該商品過期日前2周的週三

  3. 實現時間的計算: 要求使用者輸入身份證號,若格式有誤,要求其重新輸入。然後根據身份證號碼輸出20歲生日所在周的週三的日期。

    • 例如:

      出生日期:1992-07-15。

      20歲生日:2012-07-15

      當週的週三為:2012-07-18

  4. 集合相關(要求使用Strem的API和非Strem分別實現一遍)

    • 建立一個集合,存放字串"one",“two”,“three”
    • 然後輸出該集合的元素個數。
    • 然後輸出該集合是否包含字串"four"
    • 然後輸出集合是否不含有任何元素
    • 然後清空集合
    • 然後輸出該集合的元素個數
    • 然後輸出集合是否不含有任何元素
  5. 綜合練習

    • 要求使用者首先輸入員工數量,然後輸入相應員工資訊,格式為:

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