为什么"else"分支与其中一个"if"分支一起执行?

yar*_*kas -2 java if-statement

我有一个问题,知道扫管笏做了这件事.这是函数的代码片段.

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;
}
Run Code Online (Sandbox Code Playgroud)

变量String rClass是从文件中读取的,它是100%"SavingsAccount",但它会跳转所有行,最后我有account = null,为什么?甚至试图把它放在if之后:

String rClass = "SavingsAccount";
Run Code Online (Sandbox Code Playgroud)

结果是一样的.

Ric*_*gle 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;
}
Run Code Online (Sandbox Code Playgroud)

所以你设置帐户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;
}
Run Code Online (Sandbox Code Playgroud)