问题:我想将当前用户与从列表中随机选择的其他用户进行匹配。但是,这是logcat给出的错误:
while (rand > mUsers.size() && mUsers.get(rand).hasSameId(mCurrentUser)) {
query.findInBackground(new FindCallback<ParseUser>() {
相关部分分别为190和78:
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
setProgressBarIndeterminateVisibility(false);
if (e == null) {
//success!
public List<ParseUser> mUsers = users;
// case if there is just one user
else if (mUsers.size() >= 2) {
int rand = (int)(Math.random()*20);
while (rand > mUsers.size() && mUsers.get(rand).hasSameId(mCurrentUser)) {
rand = (int)(Math.random()*20);
}
mOpponentRelation.add(mUsers.get(rand));
mOpponent = mUsers.get(rand);
mCurrentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e(TAG, e.getMessage());
}
}
});
完整代码
{{1}}
我试过谷歌搜索&#34;如何获得随机用户Parse android&#34;但我找不到任何有用的东西。
答案 0 :(得分:1)
使用%,将强制列表大小随机
代码中的一个示例:
...
else if (mUsers.size() >= 2) {
int rand = Math.random()%(mUsers.size()-1) ;
...
如果rand超出了用户的大小,则会获得java.lang.IndexOutOfBoundsException
此致
答案 1 :(得分:1)
else if (mUsers.size() >= 2) {
Random random = new Random();
int rand = random.nextInt(mUsers.size());
while (mUsers.get(rand).hasSameId(mCurrentUser)) {
rand = random.nextInt(mUsers.size());
}
mOpponentRelation.add(mUsers.get(rand));
mOpponent = mUsers.get(rand);
mCurrentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e(TAG, e.getMessage());
}
}
});
答案 2 :(得分:0)
我认为在while循环中它应该是rand < mUsers.size()
。不是>
!