Java常用类_String练习题

第1题

反转键盘录入的字符串。

Java常用类_String练习题_第1张图片

代码实现:

import java.util.Scanner;

public class Test01 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请键盘输入字符串:");
		String str = input.next();
		
		StringBuilder s = new StringBuilder(str);
		str = s.reverse().toString();
		System.out.println("反转后:" + str);
		input.close();
	}
}

第2题

键盘录入QQ号码,验证格式的正确性。

1、必须是5—12位数字。

2、0不能开头。

代码实现:

public class Test02 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入QQ号码:");
		String str = scan.next();
		System.out.println("这个QQ号码是否正确:");
		if(str.matches("[1-9][0-9]{4,11}+")){//正则表达式
			System.out.println(true);
		}else{
			System.out.println(false);
		}
		scan.close();
	}
}

第3题

字符串查找。

-键盘录入一个大字符串,再录入一个小字符串。

-统计小字符串在大字符串中出现的次数。

效果如图所示:

Java常用类_String练习题_第2张图片

代码实现:

public class Test03 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入一个大字符串:");
		String bigStr = scan.next();
		System.out.print("请输入一个小字符串:");
		String smallStr = scan.next();
		int count = 0;
		int index ;
		while((index = bigStr.indexOf(smallStr)) != -1){
			bigStr = bigStr.substring(index+smallStr.length());
			count ++;
		}
		System.out.println("小字符串"+smallStr+",在大字符串出现:"+count+"次");
		scan.close();
	}
}

第4题

替换某字符串中的某字符串。
- 键盘录入一个srcStr字符串,再录入一个delStr字符串。
- 删除该字srcStr符串中的所有delStr字符串。
- 并且统计delStr字符串在srcStr中出现的次数。

效果如图:

Java常用类_String练习题_第3张图片

代码实现:

public class Test04 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入源字符串:");
		String srcStr = scan.nextLine();
		System.out.print("请输入要删除的字符串:");
		String delStr = scan.nextLine();
		
		int count = 0;
		int index;
		String tempStr = srcStr;
		while((index = tempStr.indexOf(delStr)) != -1){
			tempStr = tempStr.substring(index+delStr.length());
			count++;
		}
		System.out.println("源字符串中总共包含:"+count+"个"+delStr);
		String replaceStr = srcStr.replaceAll(delStr, "");
		System.out.println("删除"+delStr+"后的字符串为:"+replaceStr);
		scan.close();
	}
}

 

第5题

生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。

代码实现:

public class Test05 {
	public static void main(String[] args) {
		Random ran = new Random();
		double d = ran.nextDouble()*100;
		System.out.println(d);
		String str = ""+d;
		str = str.substring(0, str.indexOf(".")+3);
		System.out.println("截取小数点后两位为:"+str);
	}
}

第6题

筛选字符串。

- 定义数组,存入多个字符串。

- 删除长度大于5的字符串,打印删除后的数组。

效果如下:

Java常用类_String练习题_第4张图片

代码实现:

public class Test06 {
	public static void main(String[] args) {
		String[] str = {"hcs","15dad6","das","jionoia","你好啊"};	
		System.out.println("原来的字符串:"+Arrays.toString(str));
		int i = 0;
		while(i < str.length){
			if(str[i].length() > 5){
				System.arraycopy(str, i+1, str, i, str.length-i-1);
				str = Arrays.copyOf(str,str.length-1);
			}else{
				i++;
			}
		}
		
		System.out.println("删除长度大于5的字符串:"+Arrays.toString(str));
	}
}

第7题

判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。

代码实现:

public class Test07 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.next();
		
		//方式一
//		StringBuilder sb = new StringBuilder(str);
//		String reverse = sb.reverse().toString();
//		System.out.println("回文数:"+((reverse.equals(str))?true:false));
		//方式二:
		char[] arr = str.toCharArray();
		boolean flag = true;
		for(int left = 0,right = arr.length-1; left <= right; left++,right--){
			if(arr[left] != arr[right]){
				flag = false;
				break;
			}
			
		}
		System.out.println("回文数:");
		if(flag){
			System.out.println(true);
		}else{
			System.out.println(false);
		}
	}
}

第8题

校验密码是否合法。

  • 必须至少9个字符。

  • 必须至少2个大写字符。

  • 必须包含小写字母和数字。

效果如图:

Java常用类_String练习题_第5张图片

代码实现:
 

public class Test08 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入一串密码:");
		String str = scan.nextLine();
		
		char[] arr = str.toCharArray();
		int numCount = 0;
		int upCount = 0;
		int lowerCount = 0;
		for(int i = 0; i < arr.length; i++){
			if(arr[i] >= '0' && arr[i] <= '9'){
				numCount++;
			}else if(arr[i] >= 'A' && arr[i] <= 'Z'){
				upCount++;
			}else if(arr[i] >= 'a' && arr[i] <= 'z'){
				lowerCount++;
			}
		}
		
		if(str.length() >= 9 && upCount >= 2 && lowerCount > 0 && numCount > 0){
			System.out.println(str+"是否合法:"+true);
		}else{
			System.out.println(str+"是否合法:"+false);
		}
		scan.close();
	}
}

第9题

模拟用户登录。

  • 定义用户类,属性为用户名和密码。

  • 使用数组存储多个用户对象。

  • 录入用户和密码,对比用户信息,匹配成功登录成功,否则登录失败。

  • 登录失败时,当用户名错误,提示没有该用户。

  • 登录失败时,当密码错误时,提示密码有误。

效果如图:

密码错误:

Java常用类_String练习题_第6张图片

用户不存在:

Java常用类_String练习题_第7张图片

成功登录:

Java常用类_String练习题_第8张图片

代码实现:
 

public class Test09 {
	public static void main(String[] args) {
		User[] user = new User[3];
		user[0] = new User("Jack","1234");
		user[1] = new User("Rose","4657");
		user[2] = new User("Tom","789");
		for (int i = 0; i < user.length; i++) {
			System.out.println(user[i]);
		}
		
		Scanner input =new Scanner(System.in);
		System.out.print("请输入用户名:");
		String username = input.next();
		System.out.print("请输入密码:");
		String password = input.next();
		System.out.print("登录结果:");
		for (int i = 0; i < user.length; i++) {
			if(user[i].getName().equals(username)){
				if(user[i].getPassword().equals(password)){
					System.out.println("登录成功!");
					break;
				}else{
					System.out.println("密码错误!");
					break;
				}		
			}
			if(i == user.length-1){
				System.out.println("用户名不存在!");
			}
		}
		input.close();
	}
}
class User{
	private String name;
	private String password;
	public User() {
		super();
	}
	public User(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return name + "-" + password ;
	}	
}

第10题

定义Handleable接口,具备一个处理字符串数字的抽象方法方法String handleString(String num);

  • 处理方式1:取整数部分。

  • 处理方式2:保留指定位小数,四舍五入。

效果如图:

Java常用类_String练习题_第9张图片

代码实现:
 

public class Test10 {
	public static void main(String[] args) {
		
		String srcStr = "23.23456789";
		System.out.println("源数字:"+ srcStr);
		String str = new Handleable(){
			@Override
			public String handleString(String num){
				int index = num.indexOf(".");
				if(index != -1){
					num = num.substring(0, num.indexOf("."));
				}
				return num;
			}
		}.handleString(srcStr);
		System.out.println("取整后:"+str);
		System.out.println("源数字:"+ srcStr);
		Handleable str1 = new Handleable(){

			@Override
			public String handleString(String num) {
				int index = num.indexOf(".");
				String num1 = "";
				if(index != -1){
					num = num.substring(0, num.indexOf(".")+6);
					double d = Double.parseDouble(num);
//					System.out.println(d);
					
					d = ((int)(d * 10000 + 0.5)*1.0) / 10000;
//					System.out.println(d);
					num1 = ""+d;
					
				}
				return num1;
			}
			
		};
		String ss = str1.handleString(srcStr);
		System.out.println("保留小数点后4位四舍五入后:"+ss);
	

	
	}
}

interface Handleable{
	String handleString(String num);
}

第11题

已知一个字符串String str = "1、 hello 2. world 3. java 4.String 5. haha 6、HELLO";

要求统计出现次数最多的字母及其出现的次数。不区分大小写。

效果如图:

Java常用类_String练习题_第10张图片

代码实现:

public class Test11 {
	public static void main(String[] args) {
		String str = "1、 hellao 2. world 3. java 4.String 5. haha 6、HELLO";
		System.out.println(str);		
		//全部转换为小写
		str = str.toLowerCase();
//		System.out.println(str);
		//将所有非字母删除
		str = str.replaceAll("[^a-z]", "");
//		System.out.println(str);	
		//装换为字符数组
		char[] arr = str.toCharArray();
		//定义装字母的数组
		int counts[] = new int[26];
		for(int i = 0; i < arr.length; i++){
			counts[arr[i]-97]++;
		}		
		//定义最大值
		int max = counts[0];
		for(int i = 0; i < counts.length; i++){
			if(max < counts[i]){
				max = counts[i];
			}
		}
		
		//打印
		for(int i = 0; i < counts.length; i++){
			if(counts[i] == max){
				System.out.println((char)(i+97)+"出现次数最多,出现了"+max+"次");
			}
		}
		
		
	}
}

第12题

已知字符串String str = "1.hello2.world3.java4.string";要求拆分出每一个单词,并遍历显示

效果如图:

Java常用类_String练习题_第11张图片

代码实现:

public class Test12 {
	public static void main(String[] args) {
		String str = "1.hello2.world3.java4.string";
		System.out.println("源字符串:"+str);
		str = str.replaceAll("^\\d\\.","");
		System.out.println("去除数字后:"+str);
		String[] split = str.split("\\d\\.");
		System.out.println("遍历显示:");
		for(int i = 0; i < split.length; i++){
			System.out.println(split[i]);
		}
		
	}
}

这次分享就到这里咯,常用类写完应该就是集合了,期待吧。

你可能感兴趣的:(大数据,字符串)