Java无法解析为变量
不幸的是,balUser(在第二个IF语句中)在eclipse中突出显示为“无法解析为变量”。我只是想知道我是否在什么地方做了一些不正确的语法。是的。Java无法解析为变量,java,scope,Java,Scope,不幸的是,balUser(在第二个IF语句中)在eclipse中突出显示为“无法解析为变量”。我只是想知道我是否在什么地方做了一些不正确的语法。是的。balUser在if的范围内定义。只需在if语句之外定义它: if(text.contains(authcode) && text.contains("balance")){ String balUser = text.split("]")[0]; event.getSession().send(new Client
balUser
在if
的范围内定义。只需在if
语句之外定义它:
if(text.contains(authcode) && text.contains("balance")){
String balUser = text.split("]")[0];
event.getSession().send(new ClientChatPacket("/money"));
}
if(text.contains("Balance: $")){
text = text.split(": ")[1];
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
event.getSession().send(new ClientChatPacket("/m " + balUser + text));
}
您正在第一个
if
语句中声明您的balUser
字符串
,因此它的作用域是本地的
在第一个
if
语句之外声明它,并在第二个语句中检查null
s以消除此问题。您的变量String balUser
在一对花括号内声明,因此其范围仅限于该代码块
如果希望在其他地方知道它,则需要在两个块都可以看到的地方声明它
就你而言:
String balUser = null;
if(text.contains(authcode) && text.contains("balance")) {
balUser = ....
}
您在第一条if语句中声明了变量
balUser
,因此它的作用域就是第一条if语句。如果要在其他地方使用它,应该在if语句之外声明它
String balUser = null; // variable declared here
if(text.contains(authcode) && text.contains("balance")){
balUser = text.split("]")[0]; // remove declaration, just assignation
event.getSession().send(new ClientChatPacket("/money"));
}
if(text.contains("Balance: $")){
text = text.split(": ")[1];
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
event.getSession().send(new ClientChatPacket("/m " + balUser + text));
}
检查您的代码结构:
String balUser = null;
if(text.contains(authcode) && text.contains("balance")){
balUser = text.split("]")[0];
event.getSession().send(new ClientChatPacket("/money"));
}
if(text.contains("Balance: $")){
text = text.split(": ")[1];
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
event.getSession().send(new ClientChatPacket("/m " + balUser + text));
}
我希望现在很明显,变量在第一个块中声明,在第二个块中引用,而第二个块中不存在该变量。通常,java和所有c类语言中所有标识符的范围都受到一对周围的{
和}
的限制。但是,内部范围可以从外部范围看到标识符,因此此代码是正确的:
if() {
String balUser = ...;
} else {
event.getSession().send( ... balUser);
}
您仅在第一个
if
语句中声明了balUser
——第二个语句不在范围内。请在发布问题时格式化您的代码——从阅读您的问题并可能想回答问题的人的角度考虑。你的帖子是他们想看的格式吗?如果没有,请修复它。(在这种情况下,它肯定不是…)谢谢,这正是我想要的。九分钟后回来选择答案!唯一的问题是,这段文本位于另一个运行多次的if语句中,因此每次它都会将我的变量重置回null(这很糟糕)。是否有一种方法可以在if语句外部设置变量并在内部访问它?是的。同样,只需定义字符串balUser=null代码>在顶级if语句之外。
int i = 5;
{
int j = i;
}