/** * 1. 用本身的算法實現startsWith和endsWith功能。 * @author ztw * */ public class Practice01 { public static void main(String[] args) { String str = "qwewrewr"; // boolean temp = str.endsWith("r"); // System.out.println(temp); /* * startsWith */ char[] arr = str.toCharArray(); char c = 'r'; if(arr[0]==c){ System.out.println("true"); }else{ System.out.println("false"); } /* * endsWith */ if(arr[arr.length-1]==c){ System.out.println("true"); }else{ System.out.println("false"); } } }
輸出結果:java
false
true算法
2.採用字符的移位方式實現字符文本加密解密。數組
import java.util.Scanner; /** * 2.採用字符的移位方式實現字符文本加密解密。 * @author ztw * */ public class Practice02 { public static void main(String[] args) { System.out.println("請輸入一個字符串"); Scanner sc =new Scanner(System.in); String str1 = new String(); str1=sc.nextLine(); System.out.println(str1.replaceAll("a", "1.") .replaceAll("b", "2.").replaceAll("c", "3.") .replaceAll("d", "4.").replaceAll("e", "5.") .replaceAll("f", "6.").replaceAll("g", "7.") .replaceAll("h", "8.").replaceAll("i", "9.") .replaceAll("j", "10.").replaceAll("k", "11.") .replaceAll("l", "12.").replaceAll("m", "13.") .replaceAll("n", "14.").replaceAll("o", "15.") .replaceAll("p", "16.").replaceAll("q", "17.") .replaceAll("r", "18.").replaceAll("s", "19.") .replaceAll("t", "20.").replaceAll("u", "21.") .replaceAll("v", "22.").replaceAll("w", "23.") .replaceAll("x", "24.").replaceAll("y", "25.") .replaceAll("z", "26.")); } }
輸出結果:dom
請輸入一個字符串
asdsddffg
1.19.4.19.4.4.6.6.7.this
3.驗證是隨機生成4位驗證碼,由用戶輸入並否輸入正確, 若是輸入錯誤就生成新的驗證碼讓用戶從新輸入,最多輸入5次!加密
import java.util.Random; import java.util.Scanner; /** * 3.驗證是隨機生成4位驗證碼,由用戶輸入並否輸入正確, * 若是輸入錯誤就生成新的驗證碼讓用戶從新輸入,最多輸入5次 * @author ztw * */ public class Practice03 { public static void main(String[] args) { String str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[]arr=new char[4];//定義一個長度是4的char型數組 Random sj=new Random(); System.out.println("驗證碼是:"); for(int i=0;i<4;i++) { arr[i]=str.charAt(sj.nextInt(61));//從str中隨機截取4個單個字符並賦值給arr這個數組存放 } System.out.println(arr); Scanner sc=new Scanner(System.in); System.out.println("請輸入驗證碼"); String a=new String(arr);//把數組轉換成字符串 //定義輸入次數 for(int j=0;j<5;j++) { if(sc.nextLine().equals(a)) { System.out.println("驗證碼輸入正確"); } else { System.out.println("驗證碼輸入有誤,請從新輸入"); if(j<=3) { System.out.print("請輸入驗證碼"); for(int i=0;i<4;i++) { arr[i]=str.charAt(sj.nextInt(61));//從str中隨機截取4個單個字符並賦值給arr這個數組存放 } System.out.println(arr); a=new String (arr); } else { System.out.println("輸入有誤,對不起,5次機會已用完"); } } } } }
輸出結果:spa
驗證碼是:
AVA8
請輸入驗證碼
AVA8驗證碼輸入正確.net
/** * 4.獲取一個字符串在另外一個字符串中出現的次數 思路: 1.定義一個計數器。 2.獲取子串第一次出現的位置 3.從第一次出現的位置後剩餘的字符串中繼續獲取子串出現的位置,每獲取一次計數器加1 4,當獲取不到時,計數完成 * @author ztw * */ public class Practice04 { public static void main(String[] args) { String str1 = "asdasdas"; String str2 = "as"; //1.定義一個計數器。 int total = 0; for (String temp = str1; temp!=null && temp.length()>=str2.length();) { //2.獲取子串第一次出現的位置 if(temp.indexOf(str2) == 0){ //3.從第一次出現的位置後剩餘的字符串中繼續獲取子串出現的位置,每獲取一次計數器加1 total ++; } temp = temp.substring(1); System.out.print(temp+", "); } //4,當獲取不到時,計數完成 System.out.println("計數完成:"+total); } }
輸出結果:code
sdasdas, dasdas, asdas, sdas, das, as, s, 計數完成:3索引
/** * 5.獲取兩個子串中最大相同子串 思路: 1.將短的哪一個子串按照長度遞減的方式獲取到 2.將每次獲取到的子串去長串中判斷是否包含,若是包含,已經找到 * @author ztw * */ public class Practice05 { public static String getMaxSubString(String s1,String s2) { String max = "",min = ""; max = (s1.length()>s2.length())?s1: s2; min = (max==s1)?s2: s1; // sop("max="+max+"...min="+min); for(int x=0; x<min.length(); x++) { for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) { String temp = min.substring(y,z); sop(temp); if(max.contains(temp))//if(s1.indexOf(temp)!=-1) return temp; } } return ""; } public static void main(String[] args) { String s1 = "ab"; String s2 = "cvhellobnm"; sop(getMaxSubString(s2,s1)); } public static void sop(String str) { System.out.print(str+", "); } }
輸出結果:
ab, a, b, b,
/** * 六、寫一個方法判斷一個字符串是否對稱 * @author ztw * */ public class Practice06 { public static void main(String[] args){ Scanner input = new Scanner(System.in); String str = input.next();//接收任意字符串 isOk1(str); } /** * 判斷字符串是否對稱的方法(一) * 經過取取索引對應值來進行一一比對 * @param str */ public static void isOk1(String str){ boolean result = true; int count =(str.length()-1)/2; for (int x=0;x<=count;x++ ){ if(str.charAt(x)!=str.charAt(str.length()-1-x)){ result = false; break; } } if(!result) System.out.println("該字符串是不對稱的"); else System.out.println("該字符串是對稱的"); } /* * public static void main(String[] args){ Scanner input = new Scanner(System.in); String str = input.next();//接收任意字符串 if (isOk2(str)==true) { System.out.println("真,對稱!"); }else{ System.out.println("假,不對稱!"); } } /** * 方法二 * 經過String增強類中的取反方法reverse獲取其逆向值 * 再與原字符串相比是否相等! * 等於則返回TRUE,不然FALSE * @param str * @return */ /* public static boolean isOk2(String str){ StringBuffer sb = new StringBuffer(str); String str2 = sb.reverse().toString(); return str.equals(str2); } */ }
輸出結果:
asdsa
該字符串是對稱的
/** * 九、編寫一個程序,將下面的一段文本中的各個單詞的字母順序翻轉, 「To be or not to be",將變成"oT eb ro ton ot eb."。 * @author ztw * */ public class Practice09 { public static void main(String[] args) { String str = "To be or not to be"; String[] str2 = str.split(" "); for (int i = 0; i < str2.length; i++) { char[] ci = str2[i].toCharArray(); System.out.print(" "); for (int j = ci.length-1; j >= 0 ; j--) { System.out.print(ci[j]); } } } }
/** * 十、已知字符串:"this is a test of java". 按要求執行如下操做: (1) 統計該字符串中字母s出現的次數 (2) 取出子字符串"test" (3) 用多種方式將本字符串複製到一個字符數組Char[] str中. (4) 將字符串中每一個單詞的第一個字母變成大寫, 輸出到控制檯。 (5) 用兩種方式實現該字符串的倒敘輸出。(用StringBuffer和for循環方式分別實現) (6) 將本字符串轉換成一個字符串數組,要求每一個數組元素都是一個有意義的額英文單詞,並輸出到控制檯 * @author ztw * */ public class Practice10 { public static void main(String[] args) { String str = "this is a test of java"; // (1) 統計該字符串中字母s出現的次數 int count = 0; for (int i = 0; i < str.length(); i++) { if(str.charAt(i)=='s'){ count++; } } System.out.println("字符串中字母s出現的次數:"+count); // (2) 取出子字符串"test" String str2 = (String) str.subSequence(10, 14); System.out.println(str2); // (3) 用多種方式將本字符串複製到一個字符數組Char[] str中. char[] c = str.toCharArray(); System.out.println(c); for (int i = 0; i < c.length; i++) { System.out.print(c[i]); } System.out.println(); // (4) 將字符串中每一個單詞的第一個字母變成大寫, 輸出到控制檯。 str=str.toLowerCase(); String[] tt=str.split(" "); System.out.println(tt.length); for(int i=0;i<tt.length;i++) { //加個判斷,長度大於0的 if(tt[i].length()>0){ System.out.print(String.valueOf(tt[i].charAt(0)).toUpperCase()); System.out.print(tt[i].substring(1)+" "); } } System.out.println(); // (5) 用兩種方式實現該字符串的倒敘輸出。(用StringBuffer和for循環方式分別實現) StringBuffer sb = new StringBuffer(str); System.out.println(sb.reverse().toString()); char[] c3 = str.toCharArray(); for (int i = c3.length-1; i >= 0 ; i--) { System.out.print(c3[i]); } System.out.println(); // (6) 將本字符串轉換成一個字符串數組,要求每一個數組元素都是一個有意義的額英文單詞,並輸出到控制檯 String[] str5=str.split(" "); for (int i = 0; i < str5.length; i++) { System.out.print(str5[i]+", "); } } }
輸出結果:
字符串中字母s出現的次數:3
test
this is a test of Java this is a test of java 6 This Is A Test Of Java avaj fo tset a si siht avaj fo tset a si siht this, is, a, test, of, java,