我在我的代码上做的所有事情都正确,但是仍然存在一个我不知道为什么的问题
public User(){
public String country;
public String email;
public String fullName;
public String username;
}
userChild.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class));
String username = user.username;
Log.v(TAG, "username: " + username);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 0 :(得分:3)
如果将此代码粘贴到https://www.onlinegdb.com/上,然后单击“调试”,然后在gdb窗口中键入run
,它将带您到产生错误的行。 (您可以单击“调试”按钮附近的“帮助”按钮,以获取有关如何进一步使用此工具的说明。或者,您也可以通过Google“ gdb调试”或“ Visual Studio调试”获取进一步的帮助。)
错误出在您的scanf
行上。如果您使用Google“ scanf”,您可能会注意到int参数将address of
传递给int。因此,您需要&x
,而不是x
。您的程序也有其他错误。我建议您对调试器使用上面提到的帮助按钮,逐步执行程序,并观察发生的情况。例如,您会发现在解决第一个问题后程序立即退出。我想您会想要一个循环来防止这种情况。此外,在您的弹出窗口中,您正在专门检查是否top==null
,然后将其取消引用(top->data
)。保证这是非法的。您可以通过运行调试器,选择弹出窗口,然后在程序中尝试访问的值(在调试器中)(在gdb窗口中{print top->data
)进行打印,来检查这一点