String练习题

String练习题

1,一组,六道

		System.out.println("==============一 1================");
		String str ="at7cH630OPbQ81";
		System.out.println("由"+str.length()+"组成");//String 型的数组 与char类型的数组的区别
		总结:1,String数据类型本身就算是字符数据类型的数组
            2,相关语法:tocharAraay()
                	charAt(Index)
           3,字符串的语法:startsWith()
               		endWith()
               		length()
               		substring()
               		split()
		System.out.println("==============一 2================");
		char [] array = str.toCharArray();
		int a = 0;
		int b = 0;
		int c = 0;
		for (int i = 0; i < array.length; i++) {
			if(array[i]>'0'&&array[i]<'9') {//字符的比较,
				a ++;
			}else if (array[i]>'a'&&array[i]<'z') {
				b++;
			}else if (array[i]>'A'&&array[i]<'Z') {
				c ++;
			}		
		}
		System.out.println("数字的个数:"+a);
		System.out.println("大写字母的个数:"+b);
		System.out.println("小写字母的个数:"+c);
	总结:1,数字,字母常与Ascll码结合;
	题型:1,个数;2,首字母;3,字符长度;4,字母转换
        设计知识:1,startsWith()
            题型:1,姓氏,
		System.out.println("==============二================");
		String str2 = "王清,苏小雨,唐纯莉,王璐袁,蒋藤椒";
		String [] counts =str2.split(","); //容易遗忘数组
		int nums =0;
		System.out.println("人数"+counts.length);
		System.out.println("第二个人的名字:"+counts[2]);
		System.out.println("性王的人的姓名:");
		for (int i = 0; i < counts.length; i++) {
			if(counts[i].startsWith("王")) {
				System.out.println(counts[i]);
				nums ++;
			}
		}
		System.out.println("性王的人数:"+nums);
	涉及知识:1,startsWith()
		System.out.println("==============三================");
		String [] arr = {"姜刚","董天启","彦伯成","王显菊","董存瑞","万清"};
		int nums3 =0;
		int nums4 =0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i].length()==2) {//元素和String的转换,char的考虑
				nums3 ++;
			}
			if (arr[i].length()==3) {
				nums4 ++;
			}			
		}
		System.out.println("两个字的名字个数:"+nums3);
		System.out.println("三个字的名字个数:"+nums4);
		System.out.println("==============四================");
		String [] arr = {"姜刚","董天启","彦伯成","王显菊","董存瑞","万清"};
		int nums1 = 0;
		int nums2 =0;
		for (int i = 0; i < arr.length; i++) {
			if(arr[i].startsWith("董")) {
				System.out.println(arr[i]);
				nums1 ++;
			}
			if(arr[i].length()==3) {//length 带括号/不带括号;元素是Stirng类型
				nums2 ++;
			}
		}
		System.out.println("性董的成员个数"+nums1);
		System.out.println("名字是三位数的有:"+nums2);
	总结:1,在字符串中,length带();数组中不带括号
		System.out.println("==============五================");
		String [] arr = {"姜刚","董天启","董成","王显菊","董存瑞","万清"};
		System.out.println("性董的三个人员:");
		for (int i = 0; i < arr.length; i++) {
			if(arr[i].length()==3 && arr[i].startsWith("董")) {
				System.out.print(arr[i]+" ");
			}
		}
		System.out.println();
		System.out.println("性董的或三个人员:");
		for (int i = 0; i < arr.length; i++) {
			if(arr[i].length()==3 || arr[i].startsWith("董")) {
				System.out.print(arr[i]+" ");			
			}
		}
		System.out.println();
		System.out.println("不性董的或三个人员:");
		for (int i = 0; i < arr.length; i++) {
			if (arr[i].startsWith("董")) {
				continue;
			}
			System.out.print(arr[i]+" ");
		}
		System.out.println("==============六================");
		String [] arr = {"S-苏小雨","W-王婧","C-陈小雨","Z-姜藤椒"};
		System.out.println("首字母为w的人员:");
		for (int i = 0; i < arr.length; i++) {
			if(arr[i].startsWith("W")) {
				System.out.println(arr[i]);
			}
		}
		System.out.println();
		System.out.println("首字母在u~z之间的人员:");
		for (int i = 0; i < arr.length; i++) {
			if(arr[i].charAt(0)>='U' && arr[i].charAt(0)<='Z') {//字符串,取值,比较大小;有范围类String题目,需提取成char ,进行比较
				System.out.print(arr[i]+" ");
			}
		}
	涉及知识:1,charAt()
        题型:1,首字母.姓氏问题;2,范围类判断,

1,最终总结:

1,startswith()

题型:1,姓氏

2,charAt()

题型1,首字母,姓氏问题;2,范围判断类(判断是否含数字,字母)

3,length()

题型:1,判断名字长度

2,问题

1,常见题型有哪些?

答:名字长度,姓氏,字母转换

2,思考:

a:String常用方法?

b:string,char 和数组之间的关联?容易搞混的点在哪里?

数组的元素常用:整型和字符串;而字符串本身算是一种数组.

2 .二组,7道

		System.out.println("================1==============");
		String str = "hello world,hello china";
		String str1 = "";
		for (int i = str.length()-1; i >=0; i--) {//字符串反转,利用字符串拼接
			str1 +=str.charAt(i);
		}
		System.out.println(str1);//有String方法,待使用
	涉及常识:字符串拼接
	题型:1,字符串反转;拼接
    区别:数组的反转;索引转换
		System.out.println("=================2===单一===============");
		String [] str2 =str.split(",");
		String [] strone = str2[0].split(" ");//数组元素的应用
		String [] strtwo = str2[1].split(" ");
		System.out.println(strone[0]+" "+strone[1]+","+strtwo[0]+" "+strtwo[1]);
	涉及知识:split("")切割
    题型特征:明显标示
		System.out.println("=================2.1==循环================");
		String str5 = "";
		String[] str3 = str.split(" ");
		for (int j = 0; j < str3.length; j++) {//感悟: 循环内,任何输出都有两次,除非跳出
			str5 += str3[j] + " ";
			for (int i = 0; i >= 1; i++) {
				str5 += ",";
				break;
			}

		}
		System.out.println(str5);
		System.out.println("=================3====================");
		String threeStr ="abcd12absdabsdfabsadfba";
		int count =0;
		char [] cha =threeStr.toCharArray();
		for (int i = 0; i < cha.length-1; i++) {//无法使用foreach,因为需要对索引的运用
			if(cha[i]=='a'&&cha[i+1]=='b') {
				count ++;
			}
		}
		System.out.println("ab出现的个数:"+count);
	思路:拼接和索引;
	知识:索引,subString();
		System.out.println("=================4====================");
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一串英文字母:");
		String input = sc.next();
		String  laterInput = "";
		char [] cha =input.toCharArray();
		for (char c : cha) {
			if(c>='a'&&c<='z') {
				c -= 32;
			}else if (c>='A' && c<= 'Z') {//双if和if-else在实际应用中的细微区别
				c += 32;
			}
			laterInput +=c;
		}
		System.out.println(laterInput);
	总结:if-else的两个代码块;只执行一个方向;不过实际中,两种情况代码都需要进行;和双if的执行情况一样.
		System.out.println("=================5====================");
		String str1 = " ddasfre ";
		char [] cha = str1.toCharArray();
		String str2 ="";
		for (int i = 1; i < cha.length-1; i++) {
			str2 +=cha[i];
		}
		System.out.println("原字符串"+"|"+str1+"|");
		System.out.println("改变后"+"|"+str2+"|");
		System.out.println("=================6====================");
		System.out.println("请输入一串英文字母:");
		String input = sc.next();
		char [] cha1 = input.toCharArray();
		String laterInupt = "";
		for (char c : cha1) {
			if (c>='0'&&c<='9') {
				
			}else if (c>='a' && c<='z'){
				c -= 32;
			}else if (c>='A' && c<='Z') {
				c += 32;
			}
			laterInupt += c;
		}
		System.out.println("改变后:"+laterInupt);
		System.out.println("=================7==7.1==================");
		System.out.println("请输入一个标识符:");
		String input1 = sc.next();
		char [] d =input1.toCharArray();
		char a = input1.charAt(0);
		int count = -1;
		if(a=='_' ||a==',' ||a=='$' ||(a>='a' && a<='z') ||(a>='A' && a<='Z')) {
			for (char c : d) {
				if(a=='_' ||a==',' ||a=='$' ||(a>='a' && a<='z') ||(a>='A' && a<='Z')||a>='0'&&a<='9'){
					count ++;					
				}
			}
		}
		if (count != -1) {
			System.out.println("标识符合理");
		}else {
			System.out.println("标识符不合理");
		}
		System.out.println("=================7==7.2==================");
		for (int i = 0; i < str.length(); i++) {
			char key=str.charAt(i);
			if(i==0 &&!(key>='a'&&key<='z'||key>'A'&&key<='Z'||key=='_'||key=='$'))
			{
				System.out.println("该标识符开头不合法");
				break;
			}
			if(i!=0&&!(key>='a'&&key<='z'||key>'A'&&key<='Z'||key>='0'&&key<='9'||key=='_'||key=='$'))
			{
				System.out.println("该标识符存在非法字符");
				break;
			}
		}

3,三组,7道

		System.out.println("====================1,=======================");
		int[] arr5 = { 13, 15, 6, 9, 8, 12, 5 };
		// 计算所有成员的平均值
		// 计算其中>10的成员的平均值
		int sum1 = 0;
		int sum2 = 0;
		int count1 = 0;
		for (int i : arr5) {
			sum1 += i;
		}
		System.out.println("1,所有成员的平均数:" + sum1 / arr5.length);
		for (int i : arr5) {
			if (i > 10) {
				sum2 += i;
				count1++;
			}
		}
		System.out.println("2,大于10的成员的平均值:" + sum2 / count1);
		System.out.println("====================2,=======================");
		String[] arr2 = { "亚瑟", "安琪拉", "兰陵王", "周瑜", "诸葛亮" };
		// 获得2字名的英雄,并输出.
		// 3字名的英雄有多少个?
		System.out.println("1,获得2字名的英雄,并输出:");
		for (String string : arr2) {
			if (string.length() == 2) {
				System.out.println(string);
			}
		}
		int count2 = 0;
		for (String string : arr2) {
			if (string.length() == 3) {
				count2++;
			}
		}
		System.out.println("2,3字名的英雄有:" + count2 + "个");
		System.out.println("====================3,=======================");
		String[] arr3 = { "亚瑟-肉", "宫本武藏-刺客", "张飞-肉", "鲁班-射手", "狄仁杰-射手" };
		// 获取所有的"肉"型英雄,并输出.
		// 请问"射手"型英雄有几个?
		System.out.println("1,肉型英雄:");
		for (String string : arr3) {
			if (string.endsWith("肉")) {
				System.out.println(string);
			}
		}
		int count3 = 0;
		for (String string : arr3) {
			if (string.endsWith("射手")) {
				count3++;
			}
		}
		System.out.println("1,射手型英雄有" + count3 + "个");
		System.out.println("====================4,=======================");
		String[] arr4 = { "罗智利-20", "陈海燕-12", "刘颖聪-30", "邬艳-25", "王璐苑-14" };
		// 请问这些员工的平均年龄是多少?
		// 找出其中的未成年员工
		// 请问未成年员工的平均年龄是多少?
		int sum3 = 0;
		int count4 = 0;
		for (String string : arr4) {
			String[] arr = string.split("-");
			int age = Integer.parseInt(arr[1]);//字符串转换数字;自带类包的方法
			sum3 += age;
			count4++;
		}
		System.out.println("1,平均年龄是" + (double) sum3 / count4);
		System.out.println("1,未成年员工:");
		for (String string : arr4) {
			String[] arr = string.split("-");
			int age = Integer.parseInt(arr[1]);
			if (age < 18) {
				System.out.println(string);
			}
		}
		int sum4 = 0;
		int count5 = 0;
		for (String string : arr4) {
			String[] arr = string.split("-");
			int age = Integer.parseInt(arr[1]);
			if (age < 18) {
				sum4 += age;
				count5++;
			}
		}
		System.out.println("1,未成年的平均年龄是" + (double) sum4 / count5);
		System.out.println("=================5=======================");
		Scanner sc = new Scanner(System.in);
		String[] arr={"S-苏小雨","W-王婧","C-陈小雨","J-姜藤椒"};
		System.out.println("请输入你查询姓氏的首字母:");
		String str = sc.next();
		System.out.println("=================5==1.1=====================");
		int count = -1;
		for (String string : arr) {
			String [] arr1 = string.split("-");
			if(arr1[0].equals(str)) {
				System.out.println(arr1[1]);
				count ++;
			}
		}
		if(count == -1) {
			System.out.println("不存在");
		}
		System.out.println("=================5==1.2=====================");
		for (String string : arr) {
			if(string.startsWith(str)) {
				System.out.println(string);
			}
		}
		System.out.println("=================5==1.3=====================");
		for (String string : arr) {
			if(string.subSequence(0, 1).equals(str)) {
				System.out.println(string);
			}
		}
		System.out.println("=================6========================");
		String[] arr1 = { "亚瑟", "安琪拉", "兰陵王", "百里守约", "周瑜", "诸葛亮" };
		System.out.println("请输入英雄名字的长度");
		int len = sc.nextInt();
		for (String string : arr1) {
			if(string.length()==len) {
				System.out.println(string);
			}
		}
		System.out.println("=================7========================");
		String [] str1 = {"王箐","苏小雨","唐纯莉","王小苑","姜藤椒","姜子牙","唐骏"};
		System.out.println("请输入查询名称的姓氏:");
		String  name = sc.next();
		for (String string : str1) {
			if(string.startsWith(name)) {
				System.out.println(string);
			}
		}
		System.out.println("请输入关键字:");
		String  str2 = sc.next();
		for (String string : str1) {
			if(string.contains(str2)) {
				System.out.println(string);
			}
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值