Java常用类练习题

1.键盘录入一个字符串,统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符) 

import java.util.Scanner;

public class Test2 {

	public static void main(String[] args) {
//		1、键盘录入一个字符串,统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
//		String str = "asdBDGSf1243dSB";
		//1.键盘录入一个字符串,包含大写小写和数字
		Scanner sc = new Scanner(System.in);
		System.out.print("录入一个字符串,包含大写小写和数字:");
		String str = sc.next();
		sc.close();
		//2.定义三个统计变量
		int upperCaseCount = 0;//大写字符的统计变量
		String upperStr = "";
		int lowerCaseCount = 0;//小写字符的统计变量
		String lowerStr = "";
		int digitCount = 0;//数字字符的统计变量
		String digitStr = "";
		//3.遍历字符串,获取每个字符
		for(int i=0;i='A' && charAt<='Z'){//大写字符
				upperCaseCount++;
				upperStr+=charAt;
			}
			if(charAt>='a' && charAt<='z'){//小写字符
				lowerCaseCount++;
				lowerStr+=charAt;
			}
			if(charAt>='0' && charAt<='9'){//数字字符
				digitCount++;
				digitStr+=charAt;
			}
		}
		//6.输出统计变量的结果
		System.out.println(upperStr+"大写字母的个数是:"+upperCaseCount);
		System.out.println(lowerStr+"小写字母的个数是:"+lowerCaseCount);
		System.out.println(digitStr+"数字字符的个数是:"+digitCount);
	}
}

2.键盘录入一个字符串,要求长度为8,不符合输出错误;符合条件,将字符串中所有大写字符替换成'M'    

方式一:不使用正则

import java.util.Scanner;

public class Test2 {

	public static void main(String[] args) {
//		2、输入字符串,替换所有的大写字母为“M”	
		//1.键盘录入一个字符串,包含大写字母
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入字符串");
		String next = sc.next();
		sc.close();
		//2.定义新的字符串
		String newStr = "";
		//3.遍历字符串
		for (int i = 0; i < next.length(); i++) {
			//4.获取每个字符
			char charAt = next.charAt(i);
			//5.判断当前字符是否为大写
			//6.如果是大写字母,将大写M拼接到新的字符串中,如果是其他字符,直接拼接到新的字符串中
			if(charAt>='A' && charAt<='Z'){//大写字符
				newStr+='M';
			}else{
				newStr+=charAt;
			}
		}
		//7.输出新的字符串
		System.out.println("next:"+next);
		System.out.println("newStr:"+newStr);
	}
}

方式二:使用正则

import java.util.Scanner;

public class Test4 {

	public static void main(String[] args) {
//		4、输入字符串,替换所有的大写字母为“M”	
		//1.键盘录入一个字符串,包含大写字母
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入字符串");
		String next = sc.next();//asfgQ4etAER
		sc.close();
		//2.使用正则
		String regex = "[A-Z]";
		//3.调用字符串中替换的方法
		String replaceAll = next.replaceAll(regex, "M");
		//4.输出新的字符串
		System.out.println("next:"+next);
		System.out.println("replaceAll:"+replaceAll);
	}
}


3.模拟QQ登陆,输入账号与密码,如果账号与密码正确则显示登录成功,
如果失败则重新登录,并显示登录错误几次,如果登录错误三次则程序结束登录失败。

public class Test3 {

	public static void main(String[] args) {
		// 3、模拟QQ登陆,输入账号与密码,如果账号是jiyun123,密码是123jiyun则显示登录成功,
		// 如果不是则重新登录,并显示登录错误几次,如果登录错误三次则程序结束登录失败。
		Scanner sc = new Scanner(System.in);
		int count = 0;
		while (true) {
			count++;
			// 1.键盘录入账号
			System.out.print("请输入QQ账号:");
			String zhangHao = sc.next();
			// 2.键盘录入密码
			System.out.print("请输入QQ密码:");
			String miMa = sc.next();
			// 3.判断账号和密码是否正确
			if("jiyun123".equals(zhangHao) && "123jiyun".equals(miMa)){
				// 4.如果正确,则登录成功
				System.out.println("登录成功!");
				break;
			}else{
				// 5.如果不正确,则重新登录,并显示登录错误几次
				System.out.println("账号和密码不正确,请重新登录,当前登录错误"+count+"次");
				// 6.如果登录错误三次,就结束程序,并登录失败
				if(count==3){
					System.out.println("登录错误三次,账号被锁定,程序结束!");
					break;
				}
				
			}
		}
		sc.close();//如果while循环是死循环,这行会报Unreachable code
	}
}


4.利用Scanner输入一个字符串,再利用Scanner输入一个字符,查找该字符在上述字符串中的位置,并输出该位置。


5.String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,再对数组冒泡排序,最后使用Arrays输出数组。

public class Test1 {

	public static void main(String[] args) {
		// 1.String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,
		// 再对数组冒泡排序,最后使用Arrays输出数组。

		String str = "svd9876fsb543fdg210";
		StringBuilder sb = new StringBuilder();
		// 1.遍历字符串,获取每个字符
		for (int i = 0; i < str.length(); i++) {
			char charAt = str.charAt(i);
			// 2.判断当前字符是否为数字,
			if (Character.isDigit(charAt)) {// 如果是数字
				// 3.再判断该字符是否为偶数如果是偶数
				// char--->String--->int
				int parseInt = Integer.parseInt(String.valueOf(charAt));
				if (parseInt % 2 == 0) {
					// 保存起来
					sb.append(parseInt);
				}
			}
		}
		System.out.println("sb:" + sb);
		// 4.根据保存偶数数字的个数来创建int[]
		int[] arr = new int[sb.length()];
		for (int i = 0; i < sb.length(); i++) {
			char charAt = sb.charAt(i);// 获取sb中下表为i的字符
			// 将该字符转为int类型
			int parseInt = Integer.parseInt(String.valueOf(charAt));
			// 5.将存储的数字赋值给int[]
			// 将该int类型的值赋值给数组下表为i的元素
			arr[i] = parseInt;
		}
		System.out.println(Arrays.toString(arr));
		// 6.冒泡
		maoPao(arr);
		// 7.输出
		System.out.println(Arrays.toString(arr));

	}

	/**
	 * 对数组冒泡排序
	 * 
	 * @param arr
	 *            被排序的数组
	 */
	public static void maoPao(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}
}

6.利用Math类获取5个随整数范围在(15,30),不能重复,放在数组中,冒泡排序后遍历输出。

import java.util.Arrays;

public class Test7 {

	public static void main(String[] args) {
		// 7. 利用Math类获取5个随整数范围在(15,30),不能重复,放在数组中,冒泡排序后遍历输出。

		// 1.定义数组长度为5
		int[] arr = new int[5];
		// 2.循环产生随机数,并为数组赋值,赋值前先判断数组中是否包含此元素
		for (int i = 0; i < arr.length; i++) {
			// 循环产生随机数范围在(15,30)
			int num = (int) (Math.random() * (30 - 15) + 15);
			System.out.println(num);
			// 赋值前先判断数组中是否包含此元素
			if (contains(arr, num)) {
				i--;// 包含的时候,需要从当前i再产生一个随机数,所以需要i--和循环控制语句中的i++中和
			} else {
				arr[i] = num;// 将元素赋值给数组
			}
		}
		// 3.对数组冒泡排序
		// Arrays.sort(arr);
		maoPao(arr);// 调用冒泡方法对数组排序
		// 4.输出数组
		System.out.println(Arrays.toString(arr));
	}

	/**
	 * 对数组进行冒泡
	 * 
	 * @param arr
	 *            被冒泡的数组
	 */
	public static void maoPao(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}

	/**
	 * 判断数组中是否包含有某个元素 思路:将该元素和数组中的每个元素比较, 如果有相等的,返回true,否则,最后返回false
	 * 
	 * @param arr
	 *            数组
	 * @param num
	 *            元素
	 */
	public static boolean contains(int[] arr, int num) {
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == num) {// 如果有元素和num相等,返回true,代表数组中包含此num值
				return true;
			}
		}
		// for循环结束后,没有返回true,说明数组中没有此num值,那么就返回false,代表数组中没有此num
		return false;
	}
}

7.键盘录入一个字符串,利用正则表达式判断是否是一个qq邮箱。
8.将以下字符串按逗号分割,将得到的字符串数组转化为int数组,排序,遍历输出。
字符串如下:"120,11,32,135,234,91,18"

9.将由三个字符组成的单词输出,并统计个数: String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternDemo {

	public static void main(String[] args) {
		//将由三个字符组成的单词输出,并统计个数
		String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
		
		//1.定义正则规则
		String regex = "\\b\\w{3}\\b";
		//2.将规则加入模式器
		Pattern pattern = Pattern.compile(regex);
		//3.通过模式器获取匹配器对象
		Matcher matcher = pattern.matcher(s);
		//4.通过匹配其对象的find()方法查找符合规则的内容
		int count = 0;//统计变量
		while(matcher.find()){
			count++;
			//5.通过匹配其对象的group()方法获取通过find()方法查找到的内容
			System.out.println(matcher.group());
		}
		System.out.println("count:"+count);
	}
}

 10.产生一个长度为15位的随机字符串:大写小写和数字,最后输出该随机字符串。

public class Test10 {

	public static void main(String[] args) {
		// 产生一个长度为15位的随机字符串:大写小写和数字,最后输出该随机字符串

		// 1.定义StringBuiler,用于存储产生的随机字符
		StringBuilder sb = new StringBuilder();
		// 2.循环产生随机字符
		for (int i = 0; i < 15; i++) {
			//需要解决当前产生的字符应该是数字大写字母还是小写字母
			int num = (int) (Math.random()*10000);
			int result = num%3;//0 or 1 or 2
			int chInt;
			char ch;
			switch (result) {
			case 0://产生一个大写字符
				chInt = (int) (Math.random()*(91-65)+65);
				ch = (char) chInt;
				// 6.将产生的字符添加到StringBuiler中
				sb.append(ch);
				break;
			case 1://产生一个数字
				// 4.中间5个字符,随机对应的数字[0,10)
				chInt = (int) (Math.random()*10);
				// 6.将产生的数字添加到StringBuiler中
				sb.append(chInt);
				break;
			case 2://产生一个小写字符
				// 5.后面5个字符随机产生小写字符,小写字母对应的数字[97,123)
				chInt = (int) (Math.random()*(123-97)+97);
				ch = (char) chInt;
				// 6.将产生的字符添加到StringBuiler中
				sb.append(ch);
				break;
			default:
				break;
			}
		}
		// 7.输出随机产生的字符串
		System.out.println("sb:"+sb);
	}
}

 

你可能感兴趣的:(Java)