首页 > 解决方案 > 如何设置创建的随机名称的最小/最大长度?

问题描述

当我运行这个程序时,当通过单击按钮生成随机名称时,模拟器只会给我一个字母。我想将字符串中字符的最小生成长度设置为 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);
}
}

提前致谢。

标签: javaandroidandroid-studio

解决方案


您正在使用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);
}
}

推荐阅读