2021-09-25java练习题

1、使用Date输出当前系统时间,以及3天后这一刻的时间

import java.util.Calendar;
import java.util.Date;

public class Demo01 {
	public static void main(String[] args) {
		//1、使用Date输出当前系统时间,以及3天后这一刻的时间
		Calendar cal=Calendar.getInstance();
		Date date=new Date();
		System.out.println(date);
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_MONTH, 3);
		Date date1=cal.getTime();
		System.out.println(date1);
		
	}

}

2、将当前系统时间以"yyyy-MM-dd HH:mm:ss"格式输出

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo02 {
	public static void main(String[] args) {
		//2、将当前系统时间以"yyyy-MM-dd HH:mm:ss"格式输出
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date=new Date();
		String date1=null;
		date1=sdf.format(date);
		System.out.println(date1);
		
	}

}

3、输入某人生日,格式为"yyyy-MM-dd",输出到现在为止经过了多少周从控制台输入年月日,计算你活了多少天

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Demo03 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
		//3、输入某人生日,格式为"yyyy-MM-dd",输出到现在为止经过了多少周
		//从控制台输入年月日,计算你活了多少天
		Date date=new Date();
		Date date3 = null;
		System.out.println("请输入你的年月日:");
		String str3=scan.next();
		try {
			date3=sd.parse(str3);
			System.out.println(date3);
					
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		long l=date.getTime();
		System.out.println(l);
		long l2=date3.getTime();
		System.out.println(l2);
		long l3=l-l2;
		System.out.println(l3);
		long l4=l3/1000/60/60/24;
		System.out.println("活了"+l4+"天");
		System.out.println("活了"+l4/7+"周");
	}

}

4、输入一个生产日期格式"yyyy-MM-dd",再输入一个数字(保质期的天数)。然后经过计算输出促销日期,促销日期为:该商品过期日前2周的周三

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo04 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		/*4、输入一个生产日期格式"yyyy-MM-dd",再输入一个数字(保质期的天数)。然后经过计算输出促销日期,
		促销日期为:该商品过期日前2周的周三*/
		
		//从控制台输入一个生产日期及保质期,求过期日期
		Calendar cal=Calendar.getInstance();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("请输入一个生产期日期");
		String str=scan.next();
		System.out.println("请输入保质期:");
		int month=scan.nextInt();
		Date date1=null;
		try {
			date1=sdf.parse(str);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		cal.setTime(date1);
		cal.add(Calendar.MONTH, month);
		Date date2=cal.getTime();
		System.out.println(date2);
		//过期日期
		String str1=sdf.format(date2);
		System.out.println("过期日期为:"+str1);
		
		cal.setTime(date2);
		cal.add(Calendar.DAY_OF_MONTH, -11);
		Date date3=cal.getTime();
		String str2=sdf.format(date3);
		System.out.println("促销日期为:"+str2);
	}

}

5、实现时间的计算: 要求用户输入身份证号,若格式有误,要求其重新输入。然后根据身份证号码输出20岁生日所在周的周三的日期。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo05 {
	static Scanner scan=new Scanner(System.in);
	public static void main(String[] args) {
		/*5、实现时间的计算: 要求用户输入身份证号,若格式有误,要求其重新输入。
		然后根据身份证号码输出20岁生日所在周的周三的日期。*/
		medthod1();
		
	}
	public static void medthod1(){
		try{
			medthod();
		}catch(IntException e1){
			System.out.println("身份正不合法");
			e1.printStackTrace();
		}
		medthod2();
	}
	//然后根据身份证号码输出20岁生日所在周的周三的日期。
	public static void medthod2(){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal=Calendar.getInstance();
		System.out.println("请重新输入身份证号:");
		String str1=scan.next();
		String str2 = str1.substring(6, 10);
		String str3=str1.substring(10, 12);
		String str4=str1.substring(12, 14);
		String str5="-";
		String str6=str2+str5+str3+str5+str4;
		System.out.println(str2);
		System.out.println(str3);
		System.out.println(str4);
		System.out.println(str6);
		Date date1=null;
		try {
			date1=sdf.parse(str6);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(date1);
		cal.setTime(date1);
		cal.add(Calendar.YEAR, 20);
		Date date3=cal.getTime();
		String str7=sdf.format(date3);
		System.out.println(str7);
		int a=cal.get(Calendar.DAY_OF_WEEK);
		System.out.println(a);
		if(a>4){
			int b=a-4;
			cal.add(Calendar.DAY_OF_MONTH, -b);
		}else if(a<4){
			int c=4-a;
			cal.add(Calendar.DAY_OF_MONTH, c);
		}
		Date date4=cal.getTime();
		String str8=sdf.format(date4);
		System.out.println(str8);
		
	}
	public static void medthod() throws IntException{
		String id="^[1-9]\\d{5}(1|2)\\d{3}(0|1)\\d{1}(0|1|2|3)\\d\\d{3}(\\d|X)$";
		System.out.println("请输入一个身份证号:");
		String str=scan.next();
		if(str.matches(id)){
			
		}else{
			IntException i=new IntException("身份正无效");
			throw i;
		}
		
	}

}



class IntException extends Exception{

	public IntException() {
		super();
		// TODO Auto-generated constructor stub
	}

	public IntException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
		// TODO Auto-generated constructor stub
	}

	public IntException(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

	public IntException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public IntException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}
	
}

6、定义私有属性:

		 String name;
		 int age;
		 String gender;
		 int salary;
		 Date hiredate;//入职时间
		 定义构造方法,以及属性get,set方法.
		 定义toString方法,格式如:姓名:张三,年龄:25,性别:男,薪资:5000,入职时间:2006-02-15
		 定义equals方法,要求只要名字相同,则认为内容一致
public class Demo07 {
	public static void main(String[] args) {
		
		Person p=new Person();
		Person p1=new Person();
		p.setName("小王");
		p.setAge(21);
		p.setGender("女");
		p.setSalary(5000);
		p.setHireedates("2021-08-15");
		p1.setName("小王");
		p1.setAge(21);
		p1.setGender("女");
		p1.setSalary(5000);
		p1.setHireedates("2021-08-15");
		System.out.println(p);
		System.out.println(p1);
		if(p.equals(p1)){
			System.out.println("内容一致");
		}else{
			System.out.println("内容不一致");
		}

	}

}
class Person{
	private String name;
	private int age;
	private String gender;
	private int salary;
	private String hireedates;
	public Person() {
		super();
	}
	
	public Person(String name, int age, String gender, int salary, String hireedates) {
		super();
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.salary = salary;
		this.hireedates = hireedates;
	}
	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 String getHireedates() {
		return hireedates;
	}
	public void setHireedates(String hireedates) {
		this.hireedates = hireedates;
	}
	@Override
	public String toString() {
		return "Person [姓名=" + name + ", 年龄=" + age + ", 性别=" + gender + ", 薪资=" + salary + ", 入职时间="
				+ hireedates + "]";
	}
	public boolean equals(Object obj){
		if(this==obj){
			return true;
		}
		if(getClass()!=obj.getClass()){
			return false;
		}
		if(obj instanceof Person){
			Person p=(Person)obj;
			if(p.getName().equals(this.name)){
				return true;
			}
			
		}
		return false;
	}
}

7、创建一个集合c1,存放元素"one",“two”,“three”

	 再创建一个集合c2,存放元素"four","five","six"
	 然后将c2元素全部存入c1集合
	 然后在创建集合c3,存放元素"one,five"
	 然后输出集合c1是否包含集合c3的所有元素
	 然后将c1集合中的"two"删除后再输出c1集合
import java.util.ArrayList;
import java.util.Arrays;

public class Demo09 {
	public static void main(String[] args) {
		
		medthod1();

	}
	public static void medthod1(){
		 ArrayList<String> c1 = new ArrayList<String>();
		 ArrayList<String> c2 = new ArrayList<String>();
		 ArrayList<String> c3 = new ArrayList<String>();
		 c1.add("one");
		 c1.add("two");
		 c1.add("three");
		 c2.add("four");
		 c2.add("five");
		 c2.add("six");
		 c3.add("one");
		 c3.add("four");
		 // 然后将c2元素全部存入c1集合
		 c1.addAll(c2);
		 
		 for (String c : c1) {
	            System.out.print(c+"\t");
	        }
		 System.out.println();
		 // 然后输出集合c1是否包含集合c3的所有元素
		 boolean flag=c1.containsAll(c3);
		 System.out.println(flag);
		 //然后将c1集合中的"two"删除后再输出c1集合
		 c1.remove("two");
		 for (String c : c1) {
	            System.out.print(c+"\t");
	        }
	
}
}

8、创建一个List集合(ArrayList,LinkedList均可)

	 存放元素"one","two","three","four"。
	 获取集合第二个元素并输出。
	 将集合第三个元素设置为"3"
	 在集合第二个位置上插入元素"2"
	 删除集合第三个元素。
	 这题我用了数组和集合两种方法
import java.util.ArrayList;
import java.util.Arrays;

public class Demo11 {
	public static void main(String[] args) {
		medthod();
		System.out.println();
		medthod1();

	}
	public static void medthod(){
		String [] arr={"one","two","three","four"};
		 //获取集合第二个元素并输出。
		System.out.println(arr[1]);
		//将集合第三个元素设置为"3"
		arr[2]="3";
		for(String a:arr){
			System.out.print(a+"\t");
		}
		System.out.println();
		//在集合第二个位置上插入元素"2"
		arr=Arrays.copyOf(arr, arr.length+1);
		System.arraycopy(arr, 1, arr, 2, 3);
		arr[1]="2";
		for(String a:arr){
			System.out.print(a+"\t");
		}
		System.out.println();
		// 删除集合第三个元素
		System.arraycopy(arr, 3, arr, 2, 2);
		arr=Arrays.copyOf(arr, arr.length-1);
		for(String a:arr){
			System.out.print(a+"\t");
		}
	}
	public static void medthod1(){
		ArrayList<String> list = new ArrayList<String>();
		list.add("one");
		list.add("two");
		list.add("three");
		list.add("four");
		//获取集合第二个元素并输出。
		String l = list.get(1);
		System.out.println(l);
		//将集合第三个元素设置为"3"
		list.set(2, "3");
		for(String l1:list){
			System.out.print(l1+"\t");
		}
		System.out.println();
		//在集合第二个位置上插入元素"2"
		list.add(1, "2");
		for(String l1:list){
			System.out.print(l1+"\t");
		}
		System.out.println();
		// 删除集合第三个元素
		list.remove(2);
		for(String l1:list){
			System.out.print(l1+"\t");
		}
	}

}

9、创建一个List集合并添加元素0-9

	 然后获取子集[3,4,5,6]
	 然后将子集元素扩大10倍
	 然后输出原集合。
	 之后删除集合中的[7,8,9]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Demo12 {
	public static void main(String[] args) {
		medthod1();
	}
	public static void medthod1(){
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(0);
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(5);
		list.add(6);
		list.add(7);
		list.add(8);
		list.add(9);
		for(int l:list){
			System.out.print(l+"\t");
		}
		System.out.println();
		// 然后获取子集[3,4,5,6]
		List<Integer> arr = list.subList(3, 7);
		for(int l:arr){
			System.out.print(l+"\t");
		}
		System.out.println();
		// 然后将子集元素扩大10倍, 然后输出原集合。
		for(int i=0;i<arr.size();i++){
           arr.set(i, arr.get(i) * 10);
        }
		for(int l:arr){
			System.out.print(l+"\t");
		}
		System.out.println();
		for(int l:list){
			System.out.print(l+"\t");
		}
		System.out.println();
		// 之后删除集合中的[7,8,9]
		list.subList(7, 10).clear();
		for(int l:list){
			System.out.print(l+"\t");
		}
	}

}

10、通过控制台输入3个日期(yyyy-MM-dd格式),然后转换为Date对象后存入集合,然后对该集合排序后输出所有日期

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class Demo16 {
	static Scanner scan=new Scanner(System.in);
	
	public static void main(String[] args) {
		
		medthod1();

	}
	public static void medthod1(){
		ArrayList<Date> list = new ArrayList<Date>();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("请输入第一个日期:");
		String str1=scan.next();
		System.out.println("请输入第二个日期:");
		String str2=scan.next();
		System.out.println("请输入第三个日期:");
		String str3=scan.next();
		Date date1=null;
		Date date2=null;
		Date date3=null;
		try {
			date1=sdf.parse(str1);
			date2=sdf.parse(str2);
			date3=sdf.parse(str3);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		list.add(date1);
		list.add(date2);
		list.add(date3);
		list.sort(null);
		System.out.println(list);
	}

}

学习java就是要坚持每天写代码,加油!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值