Android的随机字符串发生器 [英] Android random string generator
问题描述
我有一个问题。
我想画一个随机字符串,像这样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屋!