• Java菜鸟学习笔记(5)--用Math.random()实现验证码功能


    Math.random()简介




    Math.random():产生一个[0,1)之间的随机数。
    返回指定范围的随机数(m-n之间)的公式:Math.random()*(n-m)+m;

    示例

           1.简单for循环10次输出值

               源码:
               
      for(int i=0;i<10;i++)
    		{
    			System.out.println("验证码:"+Math.random());
    		}
    

      

              
               
          
                      


              

           2.生成5个范围为[A,z](大小写)的随机验证码

               思想:根据ASC2码可以知道在65-122为大小写顺序,但是中间有一些符号。于是用判断把这些符号排除掉
               
               源码:
                       
    public class RandomStr
    {
    	public static void main(String[] args)
    	{
    		//定义一个空字符串
    		String result="";
    	
    		for(int i=0;i<6;i++)
    		{
    			int  intVal=(int)(Math.random()*57+65);
    			//大写到小写间有一些符号,当等于这些符号的ASC2码时候,则跳过重新循环。
    			if(intVal==91||intVal==92||intVal==93||intVal==94||intVal==95||intVal==96)
    				{
    					i--;//i回退一个数,每次遇到会特殊符号则重新循环
    					continue;
    				}
    				result=result+(char)intVal;//把结果拼接		
    		}
    			System.out.println(result);          
    	}
    }
    

                结果:
     
     
     

           3.混合生成5位含有大小写,数字的验证码

               思想:利用一个整形数组保存好大写,小写,数字的ASC2码。然后在利用这个整形数组生成随机数
               
               源码:
    public class RandomStr
    {
    	public static void main(String[] args)
    	{
    		//定义一个空字符串
    		String result="";
    		//创建用于保存大写小写数字的整形数组
    		int number[]=new int[62];
    		//order为累加器,在Asc2码放入数组时候标记数组
    		int order=0;
    		/*
    		分别把数字,大写,小写存入数组
    		*/
    		for(int i=48;i<=57;i++)
    		{
    			number[order++]=i;
    		}
    		for(int i=97;i<=122;i++)
    		{
    			number[order++]=i;
    		}
    		for(int i=65;i<=90;i++)
    		{
    			number[order++]=i;
    		}
    
    		/*
    		//测试输出数组里面的内容
    		for(int i=0;i<62;i++)
    		{
    			System.out.println(number[i]);    
    		}*/
    		
    		//这个循环生成6位验证码		
    		for(int i=0;i<6;i++)
    		{
    			//Math.random()返回为float,需要转换
    			int  intVal=(int)(Math.random()*61+0);//生成0~61的随机数
    			//把结果拼接,intVal用于数组下标
    			result=result+(char)number[intVal];		
    		}
    			System.out.println(result);          
    	}
    }
    
              结果
                     
  • 相关阅读:
    20162330 2016-2017-2《程序设计与数据结构》课程总结
    强化学习--Policy Gradient
    59. Spiral Matrix II
    54. Spiral Matrix(剑指offer 19)
    58. Length of Last Word
    c++ string split
    神经网络反向传播,通俗理解
    大话设计模式C++ 备忘录模式
    57. Insert Interval
    c++ sort
  • 原文地址:https://www.cnblogs.com/incyanggan/p/3176872.html
Copyright © 2020-2023  润新知