gpt4 book ai didi

java - 不能影响声明的变量

转载 作者:行者123 更新时间:2023-12-01 10:10:04 27 4
gpt4 key购买 nike

我正在尝试创建一个返回 int 变量的方法,但该方法不会影响该变量。

这是我的代码:

int count;
public int getVotesForEvent(final String event_title) {
firebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("Votes").exists()) {
boolean flag = false;
for (DataSnapshot event : dataSnapshot.child("Votes").getChildren()) {
String event_title2 = event.getKey();
if (event_title2.equals(event_title)) {
flag = true;
Toast.makeText(EventInfo.this, ""+Integer.parseInt(event.child("event_votes").getValue().toString()), Toast.LENGTH_SHORT).show();
count = Integer.parseInt(event.child("event_votes").getValue().toString());
}
}
if (flag != true) {
count = 0;
}
}
else {
count = 0;
}
}
});
return count;
}

问题在于该行:

count = Integer.parseInt(event.child("event_votes").getValue().toString());

该行不会影响变量count

我在这里做错了什么?

最佳答案

方法getVotesForEvent()本身不会调用里面的代码。因此,当您的代码从 getVotesForEvent() 返回时,count 的值不会更改。

这些方法仅添加具有定义行为的 ValueEventListener(顾名思义:))。

只有发生onDataChange事件后,才会执行其中的代码。

getVotesForEvent() 返回 count 没有任何意义,它只会返回您调用该函数时的值> 方法,而不是当 count 的值发生变化时(有时在将来)。

换句话来说,当调用addValueEventListener()时,您没有执行它包含的代码。您只是“加载”稍后在相应事件发生时执行的代码。

将您的代码视为如下:

int count;
public int getVotesForEvent(final String event_title) {
firebaseRef.addValueEventListener(what-shall-be-done-sometimes-in-the-future-when-onDataChange-event-occurs);
return count;
}

在这里您可以清楚地看到 count 的值没有改变。

关于java - 不能影响声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com