我有一个问题,并且知道wat会这样做。这是函数的代码段。
if(rClass.equals("SavingsAccount")) {
account = new SavingsAccount(rId,rName,start, end);
}
if(rClass.equals("DraftAccount")) {
account = new DraftAccount(rId,rName,start, end);
}
if(rClass.equals("VIPAccount")) {
account = new VIPAccount(rId,rName,start, end);
}
else {
account = null;
}
从文件中读取变量String rClass
,它是100%" SavingsAccount"但它会跳过所有的行,最后我有account = null
,为什么?
甚至试图把它放在if的后面:
String rClass = "SavingsAccount";
结果是一样的。
答案 0 :(得分:8)
请注意,您使用了2个if语句和if-else
//first if statement
if(rClass.equals("SavingsAccount")) {
account = new SavingsAccount(rId,rName,start, end);
}
//second if statement
if(rClass.equals("DraftAccount")) {
account = new DraftAccount(rId,rName,start, end);
}
//And an if-else
if(rClass.equals("VIPAccount")) {
account = new VIPAccount(rId,rName,start, end);
}
else {
account = null;
}
因此,您将帐户设置为account = new SavingsAccount(rId,rName,start, end);
,然后将其设置为null。
你想要一个else-if
if(rClass.equals("SavingsAccount")) {
account = new SavingsAccount(rId,rName,start, end);
}else if(rClass.equals("DraftAccount")) {
account = new DraftAccount(rId,rName,start, end);
}else if(rClass.equals("VIPAccount")) {
account = new VIPAccount(rId,rName,start, end);
}else {
account = null;
}
答案 1 :(得分:3)
这样做:
if(rClass.equals("SavingsAccount")) {
account = new SavingsAccount(rId,rName,start, end);
}
else if(rClass.equals("DraftAccount")) {
account = new DraftAccount(rId,rName,start, end);
}
else if(rClass.equals("VIPAccount")) {
account = new VIPAccount(rId,rName,start, end);
}
else {
account = null;
}
或者更好地使用 switch语句:
switch(rClass) {
case "SavingsAccount":
account = new SavingsAccount(rId, rName, start, end);
break;
case "DraftAccount":
account = new DraftAccount(rId, rName, start, end);
break;
case "VIPAccount":
account = new VIPAccount(rId, rName, start, end);
break;
default:
account = null;
}
答案 2 :(得分:3)
你有一个逻辑问题。
基本上你说的是:
如果这是储蓄账户,请执行此操作
如果这是草稿帐户,请执行此操作
如果这是VIP帐户,或者如果它不是VIP帐户,请将其设置为NULL
您需要将第二个和第三个if语句更改为else if语句
答案 3 :(得分:3)
你必须改变你的代码:
if(rClass.equals("SavingsAccount")) {
account = new SavingsAccount(rId,rName,start, end);
}
else if(rClass.equals("DraftAccount")) {
account = new DraftAccount(rId,rName,start, end);
}
else if(rClass.equals("VIPAccount")) {
account = new VIPAccount(rId,rName,start, end);
}
else {
account = null;
}
因为在您的情况下,您首先正确地分配了新的SavingsAccount,但是无论如何都会达到阻止,并且它会使您的引用无效。