随机开关绑定取决于填充的TextViews

时间:2018-11-07 22:18:10

标签: java android random switch-statement bounds

几个月前,我开始编写代码,并开始在自己的应用程序上进行练习。
可以输入六个名称,然后将随机名称与随机任务匹配,如果您输入所有六个名称,则可以正常工作。

现在,我希望随机绑定由实际包含输入名称的textViews限制...

Random r = new Random();
int Case = r.nextInt(6);

switch(Case){  
case 0: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player");  
    tv.setText(st);  
break;  


case 1: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player2");  
    tv.setText(st);  
break;  

case 2: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player3");  
    tv.setText(st);  
break;  

case 3: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player4");  
    tv.setText(st);  
break;  

case 4: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player5");  
    tv.setText(st);  
break;  

case 5: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player6");  
    tv.setText(st);  
break;  

case 6: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player7");  
    tv.setText(st);  
break;

我考虑使用

int x;
if (textView1 filled && TextView2 empty){x=0}
if else (textview1 filled && TextView2 filled && TextView3 empty) {x=1} etc.
Random r = new Random();
int Case = r.nextInt(x);

2 个答案:

答案 0 :(得分:0)

您可以先检查视图是否为空,然后再使用计数器进行跟踪。然后以该计数器为界。

您可以像这样检查Textview是否为空:

TextView text= findById(R.id.textview);
Boolean isEmpty =text.getText().toString().isEmpty();

答案 1 :(得分:0)

但是,如果if else (textview1 filled && TextView2 filled && TextView3 empty) {x=1} etc.第三字段为空而Fourt不会为空,会发生什么?更好的是收集数组中的所有字段并进行迭代。如果字段已填写,则将1加到计数器。像这样:

int filledCount = 0;
TextView[] views = {TextView1, TextView2, ...};
for (TextView view : views)
{if (view.filled) filledCount++;}

如果您使用Java 8,请使用流。 Stream.of(TextView1,TextView2,...).filter(TextView::isFilled).count();