Lesson_for_java_day12--String类的五个练习题

来源:互联网 发布:天刀捏脸详细数据 编辑:程序博客网 时间:2024/05/01 01:14

练习一:

package string.test;/*目的:写个程序,去除字符串两端的空格思路:1、判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。结束处判断空格也是如此。  2、当开始和结尾都判断到不是空格时,就是要获取的字符串。步骤:1、创建一个类  2、创建一个方法,判断首位非空格处。  3、创建一个输出打印方法。  4、创建一个主函数,输入任意一个字符串,验证结果。*/class StringTest{public static void sop(String str){System.out.println(str);}public static String myTrim(String str){int start = 0;int end = str.length()-1;while(start <= end && str.charAt(start) ==  ' ')start++;while(end >= start && str.charAt(end) == ' ' )end--;return str.substring(start,end +1);}public static void main(String [] args){String s = "    dlsj  diid  kds    ";sop("(" + s + ")");s = myTrim(s);sop("(" + s + ")");}}
练习二:

package string.test;/*目的:将一个字符串进行反转,将字符串中指定部分进行反转。思路:1、曾经学习过对数组的元素进行反转。  2、将字符串变成数组,对数组反转。  3、将反转后的数组变成字符串。  4、只要将反转的部分的开始和结束位置作为参数传递即可。*/class StringTest2{public static String turnString(String str,int start,int end){char ch;String beginString;String tranform;String endString;if(start != 0)beginString = str.substring(0,start);else beginString ="";tranform = str.substring(start,end);if(end != str.length())endString = str.substring(end,str.length());else endString = "";char[] cha = tranform.toCharArray();for(int i = 0; i<=cha.length/2; i++){ch = cha[i];cha[i] = cha[cha.length-1-i];cha[cha.length-1-i] = ch;}tranform = new String(cha);return beginString + tranform + endString;}public static void main(String args []){String s = "abcdefg";System.out.println(s);s = turnString(s,2,5);System.out.println(s);}}
练习三:

package string.test;/*目的:获取一个字符串在另一个字符串中出现的次数."abkkcdkkefkkskk"思路:1、定义个计数器。2、获取kk第一次出现的位置。3、从第一个出现位置后剩余的字符串中继续获取kk出现的位置。4、当获取不到时,计数完成。*/class StringTest3{public static void main(String[] args){String s = "abkkcdkkefkkskk";int count = getSubCount(s,"kk");System.out.println("kk出现的次数为:" + count);}public static int getSubCount(String s, String key){int count = 0;int index = s.indexOf("kk");while(index != -1){count++;index = s.indexOf("kk",index + key.length());}return count;}}
练习四:

package string.test;/*目的:获取两个字符串中最大相同子串,第一个动作:将短的那个串进行长度依次递减的子串打印。"abcwerthelloyuiodef"   "cvhellobnm"思路:1、将短的那个子串按照长度递减的方式获取。2、将每获取到的子串去长串中判断是否包含,如果包含,已经找到。*/class StringTest4{public static void main(String[] args){String s1 = "abcwerthelloyuiodef";String s2 = "cvhellobnm";String s = getLongSubstring(s1, s2);if(s == "")System.out.println("没有共同子串");elseSystem.out.println("两字符串的最大共同子串是:" + s);}//获取两字符串中最大共同子串private static String getLongSubstring(String s1, String s2){//判断两字符串的长串和短串String sMax, sMin;if(s1.length() <= s2.length()){sMin = s1;sMax = s2;}else{sMin = s2;sMax = s1;}//定义循环,对字符串进行判断(用短字符串比较长字符串)int end = sMin.length()-1;int start = 0;for(String sub ; end >= start ; end-- ){//每循环完一次,字符串长度减一//用固定长度的子串,从0位开始与长串字符进行比较,每次循环向前增加一位for(int i = start,e = end; e <=  sMin.length()-1; i++,e++){sub = sMin.substring(i,e+1);if(sMax.contains(sub)) return sub;}}return "";}}

练习五:

package sonyi.exercise;/*练习:定义一个字符串 str = "a,b,c;d,e,f,g;h,i,j,k,l";  把此字符串拆分成一个二维数组的字符串,并打印出来格式如下(3行): 用方法split()    a b c    d e f g    h i j k l */public class Exercise3 {public static void main(String[] args) {// TODO Auto-generated method stubString s = "a,b,c;d,e,f,g;h,i,j,k,l";String[] row = s.split(";");//对字符串进行第一次切割String[][] array = new String[row.length][];//开辟二维字符串数组行空间for(int i = 0; i < row.length; i++){array[i] = row[i].split(",");}/*for(int i = 0; i < row.length; i++){//遍历第一次切割后的字符串数组String[] col = row[i].split(",");//对字符串进行第二次切割array[i] = new String[col.length];//开辟二维字符串数组列空间for(int j = 0; j < col.length; j++){//遍历第二次切割后的字符串数组//System.out.print(col[j] + " ");//打印数组元素array[i][j] = col[j];//将数组元素赋值给二维字符串数组}}*///打印二维字符串数组for(int i = 0; i < array.length; i++){for(int j = 0; j < array[i].length; j++){System.out.print(array[i][j] + "  ");}System.out.println();}}}






0 0
原创粉丝点击