2017-04-23 29 views
0
import java.util.Random; 
public class MyCaptcha { 
    public String GenCaptcha() 
    { 

     char data[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'}; 
     char index[]=new char[7]; 

     Random r=new Random(); 
     int i =0; 

     for(i=0;i<(index.length);i++) 
     { 
      int ran=r.nextInt(data.length); 
      index[i]=data[ran]; 
      String captcha=String.valueOf(index); 
      System.out.println("captcha is"+captcha); 
      return captcha; 
     } 
    } 

這段代碼的問題是,它的產生在兩個時間的驗證碼,但我想創建刷新單驗證碼幫我在編輯這個代碼希望在Java創建驗證碼

+0

工作對我來說很好。嘗試在for之後添加'return null;'。 –

+0

1)很明顯,這段代碼不能編譯。 2)如果修復編譯/邏輯錯誤,返回類型爲String的Java方法仍然只能爲每次調用返回一個值。所以這個行爲(產生多個CAPTCHA)不是由這個代碼引起的。請提供一個MCVE。 –

+1

提示:循環中的最後3個語句應該在循環之外。 –

回答

1

你的代碼缺失方法GenCaptcha的返回語句,以便它不能運行返回2驗證碼。添加一個return語句,那麼你的方法將運行良好。

0
import java.util.Random; 

public class Test { 

public static void main(String[] args) { 
    Test t = new Test(); 
    System.out.println(t.getCaptcha()); 
} 
public String getCaptcha() { 

    char data[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 
      'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 
      'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 
      'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 
      'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', 
      '7', '8', '9' }; 
    char index[] = new char[7]; 

    Random r = new Random(); 
    int i = 0; 

    for (i = 0; i < (index.length); i++) { 
     int ran = r.nextInt(data.length); 
     index[i] = data[ran]; 
    } 
    return new String(index); 
} 
} 

這會稍微修改您的代碼,但會完成工作。希望你找到這個片段有用。

編輯:此代碼邏輯也可以重寫爲使用ASCII值範圍,但不發佈相同的代碼就足夠了。

謝謝