java - 如何设置创建的随机名称的最小/最大长度?
问题描述
当我运行这个程序时,当通过单击按钮生成随机名称时,模拟器只会给我一个字母。我想将字符串中字符的最小生成长度设置为 4,最大值设置为 8。因此,该按钮从字符串中生成一个随机名称,最小为 4,最大为 8 个字母。找不到任何解决方案。
public class MainActivity extends AppCompatActivity {
private Switch Switch;
private EditText Name;
private Button btn;
private String items[] = {"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","1","2","3","4","5","6","7","8","9","0"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Switch = (Switch) findViewById(R.id.switch1);
Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
openActivity2();
}
});
Name = findViewById(R.id.editTextTextPersonName);
btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Random rndm = new Random();
int i = rndm.nextInt(items.length);
Name.setText(items [i]);
}
});
}
public void openActivity2() {
Intent intent = new Intent(this, MainActivity2.class);
startActivity(intent);
}
}
提前致谢。
解决方案
您正在使用Name.setText(items[i])
它仅将项目数组中的一个字符设置为名称,这就是为什么您在单击按钮时收到一个字母的原因。
public class MainActivity extends AppCompatActivity {
private Switch Switch;
private EditText Name;
private Button btn;
private String items[] = {"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","1","2","3","4","5","6","7","8","9","0"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Switch = (Switch) findViewById(R.id.switch1);
Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
openActivity2();
}
});
Name = findViewById(R.id.editTextTextPersonName);
btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Random rndm = new Random();
String out = "";
// here length is will be a random number between 4 and 8
// this is used to get random number between 4(inclusive) and 9(exclusive)
int low = 4;
int high = 9;
int length = rndm.nextInt(high-low) + low;
for (int i=0;i<length;i++) {
int idx=rndm.nextInt(items.length);
out += items[idx];
}
Name.setText(out);
}
});
}
public void openActivity2() {
Intent intent = new Intent(this, MainActivity2.class);
startActivity(intent);
}
}
推荐阅读
- swiftui - 用于 SwiftUI 2 的带有图像的按钮
- java - 在 System.in 中使用 try-with-resources
- firebase - Firebase 托管 - 主页与其他任何东西(空 glob 模式)
- http - 阻止 http 服务器上的直接文件调用
- c++ - 编译和评估 conditional_t 中的错误案例问题
- python - 如何解决“BufferedReader 类型的对象不是 JSON 可序列化的”?
- javascript - 获取文件可能以字符串形式提交
- google-drive-api - 谷歌审核我的开发者控制台项目需要多长时间?
- javascript - 从 span 元素获取 JavaScript 表格元素
- java - 即使对于未经检查的异常,Spring Transaction 也不会回滚