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);          
	}
}
          結果
相關文章
相關標籤/搜索