Android的随机字符串发生器 [英] Android random string generator

查看:351
本文介绍了Android的随机字符串发生器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题。 我想画一个随机字符串,像这样aXcFg3s2。 我做不好的? 如何改变我的随机()

 私人字符串随机的;
私人字符串charsEntered;
私人的EditText等;
私人OK按钮;
CaptchaInterface.OnCorrectListener mCorrectListener;

公共无效setOnCorrectListener(CaptchaInterface.OnCorrectListener监听器){
    mCorrectListener =侦听器;
}

公共TextCaptcha(上下文的背景下){
    超(上下文);
    。getWindow()requestFeature(Window.FEATURE_NO_TITLE);
}

公共静态随机字符串(){
    随机数发生器=新的随机();
    字符串x =(字符串)(generator.nextInt(96)+ 32);
    返回X;
}

公共无效的onCreate(包冰柱){
    的setContentView(R.layout.main);
    随机=随机();
    TextView中显示=(TextView中)findViewById(R.id.textView1);
    display.setText(随机号+随机); //显示该随机数
    等=(EditText上)findViewById(R.id.etNumbers);
    OK =(按钮)findViewById(R.id.button1);
    ok.setOnClickListener(本);

}

公共无效的onClick(查看为arg0){
    // TODO自动生成方法存根
    尝试 {
        charsEntered = et.getText()的toString()。
    }赶上(NumberFormatException的NFE){
        Toast.makeText(et.getContext(),唧唧歪歪,
                Toast.LENGTH_LONG).show();
    }

    如果(随机== charsEntered){
        Toast.makeText(et.getContext(),好!,Toast.LENGTH_LONG).show();
    } 其他 {
        Toast.makeText(et.getContext(),不好!,Toast.LENGTH_LONG).show();
    }
}
 

解决方案

有几件事错了你的code。

您不能从一个int转换为字符串。它转换为一个字符来代替。然而,这只会给你一个字符所以不是你可以生成一个随机数的字符串的长度。然后运行一个循环来产生随机字符。您可以定义一个StringBuilder也并添加字符到这一点,那么使用的toString让您的随机字符串()方法

例如:

 公共静态随机字符串(){
    随机数发生器=新的随机();
    StringBuilder的randomStringBuilder =新的StringBuilder();
    INT randomLength = generator.nextInt(MAX_LENGTH);
    焦炭tempChar;
    的for(int i = 0; I< randomLength;我++){
        tempChar =(char)的(generator.nextInt(96)+ 32);
        randomStringBuilder.append(tempChar);
    }
    返回randomStringBuilder.toString();
}
 

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

I have a problem. I want to draw a random String something like this aXcFg3s2. What i doing bad ? How change my random()

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

解决方案

There are a few things wrong with your code.

You cannot cast from an int to a string. Cast it to a char instead. This however will only give you a single char so instead you could generate a random number for the length of your string. Then run a for loop to generate random chars. You can define a StringBuilder as well and add the chars to that, then get your random string using the toString() method

example:

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

Also, you should use random.compareTo() rather than ==

这篇关于Android的随机字符串发生器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆