要求根據RandomStr.java:使用類型轉換生成六位驗證字符串,示例程序每次運 行時,都會生成不同的字符串。
阿新 • • 發佈:2017-10-06
str ima method edi 驗證碼 不同的 [] 類型 直接
1.程序設計思想驗證碼
①定義一個字符串變量來保存隨機生成的。
②利用循環產生六位隨機數,在產生每一位時將其轉換為char類型並寫在字符串後面。
③利用對話框顯示生成的驗證碼,並提示用戶輸入驗證碼。
④顯示用戶是否驗證成功。
2.程序流程圖
3.源程序代碼
import java.util.Random; import javax.swing.JOptionPane; // import class JOptionPane public class VerificationCode { /** * @param args */ public staticvoid main(String[] args) { // TODO Auto-generated method stub String code="";//定義一個新的空字符串 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以及類型轉換的使用。我在判斷隨機生成的字符串與用戶輸入的驗證碼是否一樣時出錯,我的代碼為code==input,則出現無論輸入什麽驗證碼都會顯示驗證成功,後來經過查詢,發現是判斷時出錯,因為在C++中直接判斷就行,而在Java中要用到equals函數來判斷。第二個錯誤則是粗心所致,我將input.equals(code)寫成了input.equals(input),則出現無論輸入什麽驗證碼也都會顯示驗證成功。
除此之外,程序的一個缺點是只能產生全是小寫字母或者全是大寫字母,再或者全是數字組成的驗證碼,不能產生小寫字母、大寫字母、數字隨機結合的驗證碼。
要求根據RandomStr.java:使用類型轉換生成六位驗證字符串,示例程序每次運 行時,都會生成不同的字符串。