首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android随机字符串生成器

Android随机字符串生成器
EN

Stack Overflow用户
提问于 2012-08-25 04:21:12
回答 9查看 90.2K关注 0票数 40

我有个问题。我想画一个随机的字符串,就像这样的aXcFg3s2。我做了什么坏事?如何更改我的random()

代码语言:javascript
复制
private String random;
private String charsEntered;
private EditText et;
private Button ok;
CaptchaInterface.OnCorrectListener mCorrectListener;

public void setOnCorrectListener(CaptchaInterface.OnCorrectListener listener) {
    mCorrectListener = listener;
}

public TextCaptcha(Context context) {
    super(context);
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}

public static String random() {
    Random generator = new Random();
    String x = (String) (generator.nextInt(96) + 32);
    return x;
}

public void onCreate(Bundle icicle) {
    setContentView(R.layout.main);
    random = random();
    TextView display = (TextView) findViewById(R.id.textView1);
    display.setText("Random Number: " + random); // Show the random number
    et = (EditText) findViewById(R.id.etNumbers);
    ok = (Button) findViewById(R.id.button1);
    ok.setOnClickListener(this);

}

public void onClick(View arg0) {
    // TODO Auto-generated method stub
    try {
        charsEntered = et.getText().toString();
    } catch (NumberFormatException nfe) {
        Toast.makeText(et.getContext(), "Bla bla bla",
                Toast.LENGTH_LONG).show();
    }

    if (random == charsEntered) {
        Toast.makeText(et.getContext(), "Good!", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(et.getContext(), "Bad!", Toast.LENGTH_LONG).show();
    }
}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-08-25 04:39:19

您的代码中有一些地方是错误的。

不能从int类型转换为string类型。改为将其转换为char。然而,这只会给你一个字符,所以你可以为你的字符串长度生成一个随机数。然后运行for循环来生成随机字符。您也可以定义一个StringBuilder并将字符添加到其中,然后使用toString()方法获取随机字符串

示例:

代码语言:javascript
复制
public static String random() {
    Random generator = new Random();
    StringBuilder randomStringBuilder = new StringBuilder();
    int randomLength = generator.nextInt(MAX_LENGTH);
    char tempChar;
    for (int i = 0; i < randomLength; i++){
        tempChar = (char) (generator.nextInt(96) + 32);
        randomStringBuilder.append(tempChar);
    }
    return randomStringBuilder.toString();
}

此外,您应该使用random.compareTo()而不是==

票数 59
EN

Stack Overflow用户

发布于 2015-11-06 17:52:22

您需要导入UUID。以下是代码

代码语言:javascript
复制
import java.util.UUID;

id = UUID.randomUUID().toString();
票数 52
EN

Stack Overflow用户

发布于 2014-09-08 18:29:21

这就是我如何生成具有所需字符和所需长度的随机字符串

代码语言:javascript
复制
          char[] chars1 = "ABCDEF012GHIJKL345MNOPQR678STUVWXYZ9".toCharArray();
                                StringBuilder sb1 = new StringBuilder();
                                Random random1 = new Random();
                                for (int i = 0; i < 6; i++)
                                {
                                    char c1 = chars1[random1.nextInt(chars1.length)];
                                    sb1.append(c1);
                                }
                                String random_string = sb1.toString();  
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12116092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档