2017-04-23 2 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; 
     } 
    } 

Das Problem mit diesem Code ist, dass seine beiden captcha zu einem Zeitpunkt zu erzeugen, aber ich möchte mich Single Captcha auf Refresh erstellen helfenWollen captcha in Java erstellen

+0

Arbeitete gut für mich. Versuchen Sie, nach dem for-Befehl "return null;" hinzuzufügen. –

+0

1) Dieser Code wird nicht kompiliert. 2) Wenn Sie die Kompilierungs-/Logikfehler beheben, kann eine Java-Methode mit dem Rückgabetyp String immer nur einen Wert pro Aufruf zurückgeben. Daher wird das Verhalten (das Erzeugen mehrerer CAPTCHAs) nicht von diesem Code verursacht. Bitte geben Sie einen MCVE an. –

+1

Hinweis: Die letzten 3 Anweisungen in der Schleife sollten außerhalb der Schleife liegen. –

Antwort

1

Ihr Code in Bearbeitung diesen Code aus fehlt eine return-Anweisung für die Methode GenCaptcha, so dass sie nicht ausgeführt werden kann, um 2 captcha zurückzugeben. Fügen Sie eine return-Anweisung hinzu, dann wird Ihre Methode gut ausgeführt.

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); 
} 
} 

Dies ändert Ihren Code ein wenig, aber wird die Arbeit erledigt. Ich hoffe, Sie finden dieses Snippet nützlich.

BEARBEITEN: Diese Code-Logik kann neu geschrieben werden, um auch den ASCII-Wertebereich zu verwenden, aber es ist nicht ausreichend, den Code für das gleiche wie diesen zu veröffentlichen.

Dank