码迷,mamicode.com
首页 > 其他好文 > 详细

验证码和判断回文(递归)

时间:2019-09-23 22:43:38      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:eve   i++   das   不同   tin   nbsp   循环   def   索引   

一:产生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="";
     Scanner sc=new Scanner(System.in);
     str=sc.nextLine();
     System.out.println(StringHuwen(str));     
    }
    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

验证码和判断回文(递归)

标签:eve   i++   das   不同   tin   nbsp   循环   def   索引   

原文地址:https://www.cnblogs.com/hhjing/p/11575159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!