Java常用工具类练习

1.验证键盘输入的用户名不能为空,长度大于6,不能有数字。
提示:使用字符串String类的相关方法完成

public class TestCheckUserName {
	public static void main(String[] args) {
		//给出用户名
		Scanner input = new Scanner(System.in);
		System.out.print("请输入用户名:");
		String userName = input.nextLine();
		//验证表单输入的用户名不能为空,
		if(userName==null || "".equals(userName)){
			System.out.println("用户名不能为空");
			return;
		}
		//长度大于6,
		if(userName.length()<=6){
			System.out.println("用户名长度必须大于6个字符");
			return;
		}
		//不能有数字
		for(int i=0;i='0'){
			if(ch <=57 && ch >=48){
				System.out.println("用户名不能有数字");
				//break;//退出for循环
				return;//退出main方法
			}			
		}
		System.out.println("用户名符合要求");
	}
}

2.接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
提示:使用包装类Integer、Double和日期转换类DateFormat实现

public class TestStringConvert {
	public static void main(String[] args) {
		//从键盘输入字符串形式的年龄,分数和入学时间
		Scanner input = new Scanner(System.in);
		System.out.print("请输入年龄:");
		String sage = input.nextLine();
		System.out.print("请输入分数:");
		String sscore = input.nextLine();
		System.out.print("请输入日期(yyyy/MM/dd):");
		String sdate = input.nextLine();
		//年龄转换String----int
		int age = 0;
		age = Integer.parseInt(sage);
		//分数转换 String ---double
		double score = 0.0;
		score = Double.parseDouble(sscore);
		//入学时间的转换String ---Date
		Date enterDate= null;
		DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		try {
			enterDate = sdf.parse(sdate);
		} catch (ParseException e) {
			e.printStackTrace();
			//return;
		}
		//输出结果
		System.out.println(age+"  "+score+"  "+enterDate);
	}
}

3.根据交通信号灯颜色决定汽车停车、行驶和慢行
提示:使用枚举实现

//定义信号灯枚举 
public enum Signal {
	红,绿,黄
}
public class TestSignal {
	public static void main(String[] args) {
		//指定信号灯颜色
		Signal s = Signal.红;
		//根据颜色决定汽车下步行动
		switch(s){
			case 红 :
				System.out.println("停车");
				break;
			case 绿 :
				System.out.println("行驶");
				break;
			case  黄:
				System.out.println("慢行");
				break;
		}
	}
}

4.编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34… 求数列的第40位数是多少。

public class TestSum{
	public static void main(String[] args) {
		System.out.println(sum(40));
	}
	public static long sum(int n) {
		if (n <= 0) {
			return 0;
		} else if (n == 1 || n == 2) {
			return 1;
		} else {
			return sum(n - 1) + sum(n - 2);
		}
	}
}

5.以树状结构输出计算机某个指定文件夹下的所有的文件和子文件夹名称。
提示:使用File的方法,并结合递归实现

public class TestDirectory {
	public static void main(String[] args) {	
		File file = new File("d:/101sxt");
		showTree(file,1);
	}
	public static void showTree(File file,int level){
		//获取当前目录下的文件和子文件夹(仅当前层次)
		File []files = file.listFiles();
		//输出当前目录下的文件和子文件夹(仅当前层次)
		for(File f : files){
			//根据级别level输出指定个数的-
			for(int i=0;i

6.生成10个[10,23)之间的随机整数
提示:分别使用Math.random()和Random类的nextDouble()或nextInt()实现

public class TestRandom {
	public static void main(String[] args) {
		//实现1:生成10个[10,23)之间的随机整数		
		for(int i=0;i<10;i++){
			int r = (int)(Math.random()*13)+10;
			System.out.print(r+"\t");
		}
		System.out.println();
		Random rand  = new Random();
		//实现2:生成10个[10,23)之间的随机整数
		for(int i=0;i<10;i++){
			int r = (int)(rand.nextDouble()*13)+10;
			System.out.print(r+"\t");
		}
		System.out.println();
		//实现3:生成10个[10,23)之间的随机整数
		for(int i=0;i<=10;i++){
			int r = rand.nextInt(13)+10;//[0,13)+10---[10,23)
			System.out.print(r+"\t");
		}
		System.out.println();
	}
}

7.打印某个月份的可视化日历
提示:使用DateFormat、Calendar类实现功能

public class VisualCalendar2 {
	public static void main(String[] args) throws ParseException {
		//从键盘输入指定格式的字符串 (Scanner) 2015-12-3
		System.out.println("请输入日期(按照格式:2030-3-10):"); 
		Scanner scanner = new Scanner(System.in);
		String temp = scanner.nextLine();			
		//把输入的字符串变成Date(DateFormat)
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format.parse(temp);
		//把Date变成Calendar(setTime())
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		//取出日历的日信息
		int dateOfMonth = calendar.get(Calendar.DATE);
		//输出日历头信息  日	一	二	三	四	五	六
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		//输出该月1日之前的空白( 要知道该月1日是星期几)
		calendar.set(Calendar.DATE, 1);	
		int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
		for(int i=1;i

使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现

public class BinarySearch {
	public static void main(String[] args) {		
		int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		System.out.println(searchRecursive(array, 0, array.length - 1, 20));
	}
	/**
	 * 执行递归二分查找,返回第一次出现该值的位置	 * 
	 * @param array  已排序的数组
	 * @param start 开始位置
	 * @param end 结束位置
	 * @param findValue  需要找的值
	 * @return 值在数组中的位置,从0开始。找不到返回-1
	 */
	public static int searchRecursive(int[] array, int start, int end,
			int findValue) {
		// 如果数组为空,直接返回-1,即查找失败
		if (array == null) {
			return -1;
		}	
		if (start <= end) {
			// 中间位置
			int middle = (start + end) / 1;
			// 中值
			int middleValue = array[middle];
			if (findValue == middleValue) {
				// 等于中值直接返回
				return middle;
			} else if (findValue < middleValue) {
				// 小于中值时在中值前面找
				return searchRecursive(array, start, middle - 1, findValue);
			} else {
				// 大于中值在中值后面找
				return searchRecursive(array, middle + 1, end, findValue);
			}
		} else {
			// 返回-1,即查找失败
			return -1;
		}
	}
}

你可能感兴趣的:(Java常用工具类练习)