標籤:family 不能 驗證碼 splay 函數 class 定義 設計思想 pre
1.程式設計思想驗證碼
①定義一個字串變數來儲存隨機產生的。
②利用迴圈產生六位隨機數,在產生每一位時將其轉換為char類型並寫在字串後面。
③利用對話方塊顯示產生的驗證碼,並提示使用者輸入驗證碼。
④顯示使用者是否驗證成功。
2.程式流程圖
3.來源程式代碼
import java.util.Random;import javax.swing.JOptionPane; // import class JOptionPanepublic class VerificationCode { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String code="";//定義一個新的Null 字元串 for(int i=1;i<=6;i++) { Random random=new Random(); int character=random.nextInt(26)+97;//隨機產生97-123之間的數 code=code+(char)character;//將產生的數轉化為char類型為小寫字母 } String input=JOptionPane.showInputDialog(code+"\n"+"請輸入驗證碼:");//顯示驗證碼,並提示使用者輸入驗證碼 if(input.equals(code))//判斷驗證碼是否正確 { JOptionPane.showMessageDialog(null,"驗證碼正確,驗證成功!","Results",JOptionPane.PLAIN_MESSAGE ); } else { JOptionPane.showMessageDialog(null,"驗證碼錯誤,驗證失敗!","Results",JOptionPane.PLAIN_MESSAGE ); } }}
4.結果
5.實驗總結
本題中的關鍵是對類型轉換的把握,產生隨機字串的方法有很多,本題考查對RandomStr.java以及類型轉換的使用。我在判斷隨機產生的字串與使用者輸入的驗證碼是否一樣時出錯,My Code為code==input,則出現無論輸入什麼驗證碼都會顯示驗證成功,後來經過查詢,發現是判斷時出錯,因為在C++中直接判斷就行,而在Java中要用到equals函數來判斷。第二個錯誤則是粗心所致,我將input.equals(code)寫成了input.equals(input),則出現無論輸入什麼驗證碼也都會顯示驗證成功。
除此之外,程式的一個缺點是只能產生全是小寫字母或者全是大寫字母,再或者全是數字組成的驗證碼,不能產生小寫字母、大寫字母、數字隨機結合的驗證碼。
要求根據RandomStr.java:使用類型轉換產生六位驗證字串,樣本程式每次運 行時,都會產生不同的字串。