一:产生6位的随机验证码(区分大小写)
思路:1.将62位字符存在字符串中,先产生随机的6位数
2.用append()定义动态字符串数组,再用charAt()对其进行索引,从而形成随机字符的函数
3.书写主函数,调用getStringRandom(n)函数,决定产生随机字符的位数
package identifying_code; import java.util.Scanner; import java.util.Random; public class Identifying_Code { public static String getStringRandom(int length) {//length表示随机生成几位随机数 String str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; Random random=new Random(); StringBuffer bf=new StringBuffer();//动态字符串数组 for(int i=0;i<length;i++) { int number=random.nextInt(62);//随机产生0-62的数字 bf.append(str.charAt(number));//往动态字符串数组添加 //str.charAt(number)索引str中的第number-1个字符 //Stringbuffer1.append(Stringbuffer2)是放在一起的,而String1+String2存在于不同的两个地址内存 } return bf.toString();//返回一个以"文本方式表示"此对象的字符串 } public static void main(String[] args) { String code=""; code=getStringRandom(6); System.out.println("验证码为:"+code); System.out.println("请输入验证码(区分大小写):"); Scanner sc=new Scanner(System.in); String sr=sc.next(); if(sr.equals(code)) System.out.println("验证码正确"); else System.out.println("验证码错误"); } }
二:用递归判断一个字符串是否为回文序列(回文序列例:level,abba...)
思路:1.书写递归函数,判断递归得终止条件
2.将字符串装换成字符数组(用charAt())循环调用,比较是否相等
3.定义布尔类型,输出布尔类型结果
方法一:
package hhj; //利用递归判断是否为回文序列 /** * 判断终止条件,循环调用 */ import java.util.Scanner; public class Hhj{ public static boolean isTrue(String str,int n) { int len=str.length(); if(n==0||n==1) return true;//判断递归终止条件 else { if(str.charAt(len-n)==str.charAt(n-1)) return isTrue(str,--n);//循环比较 else return false; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入字符串:"); String st=sc.next(); int l=st.length(); if(isTrue(st,l))//调用isTrue函数 System.out.println("是回文序列"); else System.out.println("不是回文序列"); } }
代码测试截图:
方法二:
用subString()
package hu; import java.util.Scanner; public class Hu { public static void main(String[] args) { String str=""; System.out.println("请输入字符串:"); Scanner sc=new Scanner(System.in); str=sc.nextLine(); // System.out.println(StringHuwen(str)); if(StringHuwen(str)) System.out.println("是回文序列"); else System.out.println("不是回文序列"); } public static boolean StringHuwen(String str) { int len=str.length(); if(len==0||len==1) return true; char first=str.charAt(0); char last=str.charAt(len-1); if(first!=last) return false; return StringHuwen(str.substring(1,len-1)); } }
代码测试截图:
subString(a,b)截取字符串从位置a截取到b,但是不包括b;
例题:String str=“123456789”;
str.subString(0)——>123456789
str.subString(1)——>23456789
str.subString(0,1)——>1
str.subString(0,4)——>1234