黑马程序员——常用API

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

 黑马程序员——常用API_第1张图片

String类练习一

/*
 * 1,给定一个字符串数组。按照字典顺序进行从小到大的排序。
 * {"nba","abc","cba","zz","qq","haha"}
 * 
 * 思路:
 * 1,对数组排序。可以用选择,冒泡都行。
 * 2,for嵌套和比较以及换位。
 * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。
 *   字符串对象怎么比较呢?爽了,对象中提供了用于字符串对象比较的功能。
 * 
 * 
 */
public class StringTest_1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" };

		printArray(arr);

		sortString(arr);

		printArray(arr);

	}

	public static void sortString(String[] arr) {

		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {

				if(arr[i].compareTo(arr[j])>0)//字符串比较用compareTo方法
					swap(arr,i,j);
			}
		}
	}

	private static void swap(String[] arr, int i, int j) {
		String temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}

	public static void printArray(String[] arr) {
		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			if (i != arr.length - 1)
				System.out.print(arr[i] + ", ");
			else
				System.out.println(arr[i] + "]");
		}
	}

}

 

String类练习二

/*
 * 2,一个子串在整串中出现的次数。
 * "nbaernbatynbauinbaopnba"
 * 思路:
 * 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
 * 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
 * 而剩余字符串的起始位是出现位置+子串的长度.
 * 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。 
 * 
 */



public class StringTest_2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String str = "nbaernbatnbaynbauinbaopnba";
		String key = "nba";
		
		int count = getKeyStringCount_2(str,key);
		System.out.println("count="+count);
				
	}

	public static int getKeyStringCount_2(String str, String key) {
		
		int count = 0;
		int index = 0;
		
		while((index = str.indexOf(key,index))!=-1){
			
			index = index + key.length();
			count++;
			
		}
		
		return count;
	}

	/**
	 * 获取子串在整串中出现的次数。
	 * @param str
	 * @param key
	 * @return
	 */
	public static int getKeyStringCount(String str, String key) {
		
		//1,定义计数器。 
		int count = 0;
		
		//2,定义变量记录key出现的位置。
		int index = 0;
		
		while((index = str.indexOf(key))!=-1){
			
			str = str.substring(index+key.length());
			count++;
		}
		return count;
	}
}

 

String类练习三

/*
 * 3,两个字符串中最大相同的子串。
 * "qwerabcdtyuiop"
 * "xcabcdvbn"
 * 
 * 思路:
 * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
 * 如果存在,短的那个字符串就是最大子串。
 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
 * 如果存在就已找到,就不用在找了。
 * 
 * 
 */
public class StringTest_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String s1 = "qwerabcdtyuiop";
		String s2 = "xcabcdvbn";

		String s = getMaxSubstring(s2, s1);
		System.out.println("s=" + s);
	}

	/**
	 * 获取最大子串
	 * 
	 * @param s1
	 * @param s2
	 * @return
	 */
	public static String getMaxSubstring(String s1, String s2) {
		
		String max = null,min = null;
		max = (s1.length()>s2.length())?s1:s2;
		
		min = max.equals(s1)?s2:s1;
		
		System.out.println("max="+max);
		System.out.println("min="+min);
		
		
		
		for (int i = 0; i < min.length(); i++) {
			
			for(int a = 0,b = min.length()-i; b != min.length()+1; a++,b++){
				
				String sub = min.substring(a, b);
//				System.out.println(sub);
				if(max.contains(sub))
					return sub;
			}
		}
		
		return null;
	}
}

 

String类练习四

/*
 * 4,模拟一个trim功能一致的方法。去除字符串两端的空白 
 * 思路:
 * 1,定义两个变量。
 * 一个变量作为从头开始判断字符串空格的角标。不断++。
 * 一个变量作为从尾开始判断字符串空格的角标。不断--。
 * 2,判断到不是空格为止,取头尾之间的字符串即可。
 */
public class StringTest_4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String s = "    ab   c     ";

		s = myTrim(s);
		System.out.println("-" + s + "-");
	}

	public static String myTrim(String s) {

		int start = 0, end = s.length() - 1;

		while (start <= end && s.charAt(start) == ' ') {
			start++;
		}
		while (start <= end && s.charAt(end) == ' ') {
			end--;
		}
		return s.substring(start, end + 1);
	}

}


基本数据类型包装类练习

/*
 * 对一个字符串中的数值进行从小到大的排序。
 * 
 * "20 78 9 -7 88 36 29"
 * 
 * 思路:
 * 1,排序,我很熟。可是我只熟int。
 * 2,如何获取到这个字符串中的这些需要排序的数值?
 * 发现这个字符串中其实都是空格来对数值进行分隔的。
 * 所以就想到用字符串对象的切割方法将大串变成多个小串。
 * 3,数值最终变成小字符串,怎么变成一个int数呢?
 * 字符串-->基本类型 可以使用包装类。
 * 
 * 
 */

public class WrapperTest {

	private static final String SPACE_SEPARATOR = " ";
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		String numStr = "20 78 9 -7 88 36 29";
		
		System.out.println(numStr);
		numStr = sortStringNumber(numStr);
		System.out.println(numStr);
		
	}
	/**
	 * 
	 * @param numStr
	 * @return
	 */
	public static String sortStringNumber(String numStr) {
		
		//1,将字符串变成字符串数组。
		String[] str_arr = stringToArray(numStr);
		
		//2,将字符串数组变成int数组。
		
		int[] num_arr = toIntArray(str_arr);
		
		//3,对int数组排序。
		mySortArray(num_arr);
		
		//4,将排序后的int数组变成字符串。
		
		String temp = arrayToString(num_arr);
		
		return temp;
	}

	public static String arrayToString(int[] num_arr) {
		
		StringBuilder sb = new StringBuilder();
		for(int x = 0; x

Date类练习一

/* 练习:
 * "2012-3-17"到"2012-4-6"
 * 中间有多少天?
 * 思路:
 * 两个日期相减就哦了。
 * 咋减呢?
 * 必须要有两个可以进行减法运算的数。
 * 能减可以是毫秒值。如何获取毫秒值?通过date对象。
 * 如何获取date对象呢?可以将字符串转成date对象。
 * 
 * 1,将日期格式的字符串转成Date对象。
 * 2,将Date对象转成毫秒值。
 * 3,相减,在变成天数 
 * 
 * 
 */

public class DateTest {

	/**
	 * @param args
	 * @throws ParseException 
	 */
	public static void main(String[] args) throws ParseException {

		String str_date1 = "2012-3-17";
		String str_date2 = "2012-4-18";
		test(str_date1,str_date2);
	}

	public static void test(String str_date1,String str_date2) throws ParseException {
		
		//1,将日期字符串转成日期对象。
		//定义日期格式对象。
		DateFormat dateFormat = DateFormat.getDateInstance();
		dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Date date1 = dateFormat.parse(str_date1);
		Date date2 = dateFormat.parse(str_date2);
		
		long time1 = date1.getTime();
		long time2 = date2.getTime();
		
		long time = Math.abs(time1-time2);
		
		
		int day = getDay(time);
		System.out.println(day);
		
	}

	private static int getDay(long time) {
		
		int day = (int)(time/1000/60/60/24);
		
		return day;
	}
}


Date类练习二

public class CalendarDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Calendar c = Calendar.getInstance();
		
		int year = 2012;
		showDays(year);
	}

	/**
	 * @param c
	 */
	public static void showDays(int year) {
		
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);
		
		c.add(Calendar.DAY_OF_MONTH, -1);
		
		showDate(c);
	}

	/**
	 * @param c
	 */
	public static void showDate(Calendar c) {
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH)+1;
		int day = c.get(Calendar.DAY_OF_MONTH);
		int week = c.get(Calendar.DAY_OF_WEEK);
		
		
		System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
	}

	public static String getWeek(int i) {
		
		String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		
		return weeks[i];
	}
}

 

你可能感兴趣的:(java基础(学习笔记篇))