【问题标题】:Random switch bound depending on filled TextViews随机开关绑定取决于填充的 TextViews
【发布时间】:2018-11-07 22:18:10
【问题描述】:

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

现在我希望随机绑定被实际包含输入名称的 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);

【问题讨论】:

  • 这是安卓吗?
  • 不要使用Switch-Statement。使用/传递一个列表到下一个Activity
  • 我认为这是代码中的Android 并添加了Android 标签。您需要从这里开始。-> 欢迎来到开发人员学习、分享和建立职业的地方! How to create a Minimal, Complete, and Verifiable example.

标签: java android random switch-statement bounds


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    但是如果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();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2017-03-12
      相关资源
      最近更新 更多