首页 > 代码库 > 第八九天笔记总结

第八九天笔记总结

10.1
 Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法
 
 Calendar(日历类)        --       获取年,获取月,获取日,获取时,获取分,获取秒。
                public int get(int field):返回给定日历字段的值
 
 10.2
  需求:获取当前时间的5年后的3个月前的7天后。
 public void add(int field,int amount):根据amount修改field的值
 public void set(int year,int month,int date):设置当前日历的年月日
package com.edu.calendar;
 
import java.util.Calendar;
import java.util.Scanner;
 
public class CalendarTest {
         publicstatic void main(String[] args) {
                   //10.3  键盘录入年份,获取任意一年的二月有多少天
                   /**
                    * 1.获取年份
                    * 2.将日历对象的时间调到,此年的3月的第一天
                    * 3.将日期对象向前推一天
                    * 4.获取此天的日期
                    */
                   System.out.println("请输入年份");
                  
                   Scannersc = new Scanner(System.in);
                   intyear = sc.nextInt();
                  
                   //2.将日历对象的时间调到,此年的3月的第一天
                   Calendarc = Calendar.getInstance();
                   c.set(year,2, 1);
                  
                   //3.将日期对象向前推一天
                   c.add(Calendar.DATE,-1);
                  
                   //4.获取此天的日期
                   System.out.println("该年的二月有"+c.get(Calendar.DATE));
                  
         }
 
}
 
 10.3
 键盘录入年份,获取任意一年的二月有多少天
 package com.edu.calendar;

import java.util.Calendar;
import java.util.Scanner;

public class CalendarTest {
	public static void main(String[] args) {
		// 10.3  键盘录入年份,获取任意一年的二月有多少天 
		/**
		 * 1.获取年份
		 * 2.将日历对象的时间调到,此年的3月的第一天
		 * 3.将日期对象向前推一天
		 * 4.获取此天的日期
		 */
		System.out.println("请输入年份");
		
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		
		// 2.将日历对象的时间调到,此年的3月的第一天
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);
		
		//3.将日期对象向前推一天
		c.add(Calendar.DATE, -1);
		
		//4.获取此天的日期
		System.out.println("该年的二月有"+c.get(Calendar.DATE));
		
	}

} 
 
/**
 *  
 案例:
 键盘录入出生日期,算一下你来到这个世界多少天?
 */
 
package com.edu;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
 *  
 案例:
 键盘录入出生日期,算一下你来到这个世界多少天?
 */
public class Day {
public static void main(String[] args) throws ParseException {
//创建键盘录入对象并导包
Scanner sc = new Scanner(System.in);
//提示用户输入
System.out.println("请按照yyyy-MM-dd输入出生日期");
//接收键盘录入数据
String dateBirth = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(dateBirth);
long birthTime = d.getTime();
Date d2 = new Date();
long nowTime = d2.getTime();
long time = nowTime-birthTime;
System.out.println("你来到这个世上"+time/(1000*60*60*24)+"天了");
}
}
--------------------------------------------------------------------------------------------------------------------------
 11. 正则表达式:
 11.1
  正则表达式:符合一定规则的字符串
 
  案例:(用正则和代码两种方式实现)
                键盘录入qq号码,校验QQ号码。
  需求:
                1:要求必须是5-15位数字
                 2:0不能开头
package com.edu.regex1;

import java.util.Scanner;

public class RegexDemo {
	public static void main(String[] args) {
		/**
		 *   案例:(用正则和代码两种方式实现)
  		 键盘录入qq号码,校验QQ号码。
		  需求:
		  		1:要求必须是5-15位数字
		 		2:0不能开头 
				
				分析:(封装一个方法,这个方法的返回值是布尔类型,参数就是qq号码)
				1.判断qq号码的长度,5-15位之间
				2.不能以0开头
				3.每一位的字符必须是数字
		 */
		System.out.println("请输入你需要校验的qq号码");
		Scanner sc = new Scanner(System.in);
		String qq = sc.nextLine();
		
		//将获取到的qq号码传递给我这个方法
		//方式1:使用代码进行校验qq号码
		//System.out.println(isCheck(qq));
		
		//方式2:使用正则表达式校验qq号码
		System.out.println(isCheck2(qq));
	}

	private static boolean isCheck2(String qq) {
		//定义一个校验qq号码的正则表达式,这个正则表达式就是符合我的qq号码的校验规则的正杂表达式
		String reg = "[1-9][0-9]{4,14}";
		//使用正则表达式校验我的qq号码
		boolean flag = qq.matches(reg);
		return flag;
	}

	private static boolean isCheck(String qq) {
		//定义一个标记
		boolean flag = true;
		//在这里进行校验判断,但凡有一个条件不满足,就更该flag的值为false
		//1.判断qq号码的长度,5-15位之间
		if (qq.length()>=5&&qq.length()<=15) {
			//2.不能以0开头
			if (!qq.startsWith("0")) {
				//3.每一位的字符必须是数字
				char[] qqChs = qq.toCharArray();
				//遍历字符数组
				for (int i = 0; i < qqChs.length; i++) {
					if (Character.isDigit(qqChs[i])) {
						
					}else {
						flag = false;
					}
				}
				
			}else {
				flag = false;
			}
			
		}else {
			//更改flag的值
			flag = false;
		}
		
		return flag;
	}

}                 
                 
 
 
 11.2
         规则字符在java.util.regexPattern类中
 
         A:字符
                   x字符x(举例:a,1)
                   \\反斜线字符
                                                                          
         B:字符类
                   [abc]a、b 或 c(简单类)
                   [^abc]任何字符,除了 a、b 或 c(否定)
                   [a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
                   [0-9]0-9字符
                  
         C:预定义字符类
                   .任何字符
                   \d数字:[0-9]
                   \w单词字符:[a-zA-Z_0-9]
                  
                                    
         D:Greedy数量词
         X?X,一次或一次也没有
         X*X,零次或多次
         X+X,一次或多次
         X{n}X,恰好 n 次
         X{n,}X,至少 n 次
         X{n,m}X,至少 n 次,但是不超过 m 次 
        
         结论:以后需要匹配的正则表达式怎么写呢?
         答:不用写,直接网上百度
 
 11.3
   判断功能:
                public boolean matches(Stringregex):告知此字符串是否匹配给定的正则表达式。 
   需求1:找出规则,写出正则(1[38][0-9]{9}),校验电话号码
                 13245678901 13332345678 1345678901218812345678 18999999999
                     18666666666 18786868686
 
   需求2:找出规则,写出正则(Stringreg = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[comnet]{2,3})+"),校验邮箱
                     sunmeng@163.com   zhangsan@126.com   lisi@sina.com   wxd1221@sina.com.cn
                     csf@gmail.com   1512345@qq.com
                    
 11.4     
   分割功能
        public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。  
   需求1:
   分割如下字符串:
  String s = "aa,bb,cc";
  String s2 = "aa.bb.cc";
  String s3 = "aa bb cc";
  String s4 = "aa   bb                     cc";
  String s5 = "D:\\baidu\\20150826\\day14";
 
   需求2:
   我有如下一个字符串:”91 27 46 3850”
   请写代码实现最终输出结果是:”27 38 46 50 91”
package com.edu03;
 
import java.util.Arrays;
 
/**
 * 
   需求2:
   我有如下一个字符串:”91 27 46 38 50”
   请写代码实现最终输出结果是:”27 38 46 50 91”r
 *
 */
publicclass SplitDemo {
    publicstaticvoid main(String[] args) {
       String s = "91 27 4638 50";
       String reg = " ";
       String[] str = s.split(reg);
       //遍历字符串数组,并定义一个int[]
              int[] arr = newint[str.length];
              for (int i = 0; i < str.length; i++) {
                  arr[i] = Integer.parseInt(str[i]);
              }
              
              //排序int[]
              Arrays.sort(arr);
              
              //遍历数组
              StringBuffer sb = new StringBuffer();
              for (int i = 0; i < arr.length; i++) {
                  sb.append(arr[i]+" ");
              }
       
            System.out.print(sb.toString());
           
       
    }
 
}


第八九天笔记总结