javaSE (十)String的一些练习(计算字符数目、大小写转换、数组转换成字符串、键入数组/字符串的反转、大串中小串出现的次数)

1、计算一个字符串里大写小写乱码的字符数目:

s1.charAt(i):返回 char指定索引处的值。
Ascall码可以直接在字符上比大小

package cn.njupt;

public class StringPointer {

	public static void main(String[] args) {
		String s1 = "aaaABNiiippLLLbbb@#$%^&";
		int m = 0;int n = 0;int k = 0;
		for(int i = 0;i < s1.length();i++) {
			if(s1.charAt(i) <= 'Z' && s1.charAt(i) >= 'A'  ) {
				m++;
			}else if (s1.charAt(i) <= 'z' && s1.charAt(i) >= 'a' ) {
				n++;
			}else {
				k++;
			}
		}
		System.out.println("大写:" + m + ",小写:" + n + ",其他:" + k);
			
		}
	}

输出:大写:6,小写:11,其他:6

2、将一个字符串第一个字母变为小写,其他变成大写:

toLowerCase() 变成小写
toUpperCase() 变成大写
concat() 连接字符
substring() 剪切字符串

想用s1.charAt(i)和循环将字符串变成字符然后改变大小写再拼接的,好像字符改变大小只能通过Ascall码???

package cn.njupt;

public class StringPointer {

	public static void main(String[] args) {
		String s1 = "aaaABNiiippLLLbbb";
		String s2 = s1.substring(0, 1).toLowerCase().concat(s1.substring(1).toUpperCase());
		System.out.println(s2);
		}

	}

输出:aAAABNIIIPPLLLBBB

3、将一个数组{1,2,3}变成[1,2,3]:

  1. 用s.substring(0, 5)做一个字符串的切割:
package cn.njupt;

public class StringPointer {

	public static void main(String[] args) {
		int[] arr = {1,2,3};
		String s = new String();
		for (int i = 0; i < arr.length; i++) {
			s += arr[i] + ",";
			
		}
		
		System.out.print( "[" +  s.substring(0, 5) + "]");
	}

}
  1. 也可以用循环条件做,但是我觉得略感啰嗦:
package cn.njupt;

public class StringPointer {

	public static void main(String[] args) {
		int[] arr = {1,2,3};
		String s = "[";
		for (int i = 0; i < arr.length; i++) {
			if(i == arr.length - 1) {
				s = s + arr[i] + "]";
			}else {
				s = s + arr[i] + ",";
			}
			
		}
		
		System.out.print(s);
	}

}

4、键入数组/字符串的反转:

关键:创建另一个数组/字符串来从后面往前存储原来的数组/字

  1. 键入数组的反转:
    在没有学习动态数组ArrayList之前,我们的数组都是要指定数组长度然后一个一个键入的(有别的方法么?)
package cn.njupt;

import java.util.Scanner;

public class StringPointer {

	private static Scanner sc;

	public static void main(String[] args) {

		// 键盘输入数组的反转
		int n = 10;
		int[] arr1 = new int[n];
		for (int i = 0; i < arr1.length; i++) {
			sc = new Scanner(System.in);
			arr1[i] = sc.nextInt();
		}

	
		int[] arr2 = new int[arr1.length];
		
		for (int i = 0; i < arr1.length; i++) {
			arr2[i] = arr1[arr1.length - i - 1];
			}
			for (int i = 0; i < arr2.length; i++) {
				System.out.print(arr2[i]);
			}
		}
	}


  1. 键入字符串的反转
    关键是要将字符串转换为字符数组char[] chr = str1.toCharArray();,然后用数组的方式反转,最后再拼接成字符串
package cn.njupt;

import java.util.Scanner;

public class ArrayReverse {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String str1 = sc.nextLine();
		char[] chr = str1.toCharArray();
		String str2 = "";
		for (int i = 0; i < str1.length(); i++) {
		      str2 += chr[str1.length() - i -1];
		}
		System.out.println(str2);
		}
	}

		

5、大串中小串出现的次数:

index = max.indexOf(min) 返回小串在大串中的位置索引
max.substring(index + min.length()) 截取大串

步骤:

  1. 定义计数器count和指标index;
  2. 用while循环,max.indexOf获得小串的指标位置(如果没有返回-1,循环结束)
  3. count++,max.subString从index+小串长度截取一下
  4. 转2
package cn.njupt;

public class ArrayReverse {

	public static void main(String[] args) {
		String max = "abfbadjkllskadjkl asjdhjashjkladhasdhjklsdhasjkl ";
		String min = "jkl";
		int count = 0;
		int index = 0;
		
		while( (index = max.indexOf(min)) != -1) {
			count++;
			max = max.substring(index + min.length());
		}
		System.out.println(count);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值