for循环将最后的结果分配给变量

时间:2018-11-06 20:49:34

标签: java android firebase firebase-realtime-database

我试图做到这一点,以便每当用户创建游戏时,在与游戏相关联的加入按钮旁边的屏幕上就会显示他们为游戏设置的下注值。

这是我要更改的UI外观:

enter image description here

这是在firebase中从中提取的数据库结构:

enter image description here

但是您可以看到,下注值始终求助于数据库中的最后一个下注节点。这样做是因为接收这些值的for循环正在遍历数据库中的每个下注值,然后将其分配给变量。这是获取下注值的循环

WeightedSampler

然后我在这里的RecyclerViewer类中将textView值设置为下注:

import java.util.Random;
import java.util.stream.*;

public class WeightedSampler {

  private static Random generator = new Random(); 

  public static int sample(int[] weights) {
    int total = calculateSum(weights);
    int remains = generator.nextInt(total);
    int index = 0;

    while (index < weights.length) {
      remains -= weights[index];
      if (remains < 0) {
        break;
      }
      index++;
    }
    return index;
  }

  public static int calculateSum(int[] arr){
    return IntStream.of(arr).sum();
  }
}

我一直在研究如何从数据库中获取每个下注值并将其分配给相关接口。我尝试过一个for循环,将下注添加到列表中,然后将下注的索引与节点列表进行匹配,但这没有用。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可能希望将所有数据放入某种本地结构中。为“玩家”创建一个带有数据变量的类,然后使用它来做您正在做的事情。不知道这是否是列表/回收者视图。

如果您一次只是在寻找价值,则可以像名称一样查看另一个价值,当您有比赛时,抓住赌注并稍作休息即可退出循环。