为什么我的代码绕过else if语句?

时间:2020-04-24 13:13:54

标签: java if-statement try-catch

这里的Java新手,只是搞乱了我的项目,并注意到我的代码输出没有执行else if循环。如果我对测验(A或C)输入了错误的答案,则没有输出,它将直接跳至我的try块代码。

但是,如果我输入正确的答案,它将输出正确的代码,仅当我输入错误的答案时才会输出。

const Header = ({ currentUser }) => {
    return (
        <div className="top-nav">
            <ReactSVG src={crown}/>
            <div className="links">
                <Link to="/shop">SHOP</Link>
                <Link to="/contact">CONTACT</Link>
                {
                    currentUser ? <div onClick={() => auth.signOut()}>SIGN OUT</div>
                                : <Link to="/sign-in">SIGN-IN</Link>
                }
                <Link to="/cart">CART</Link>
            </div>
        </div>
    )
}
export default Header;

感谢您的帮助!而且我知道我的代码可能是凌乱的哈哈

3 个答案:

答案 0 :(得分:1)

if(answer1.equals("A" + "C"))->这检查answer1是否等于“ AC”。您串联了两个字符串,而不是||的OR运算符。尝试 if(answer1.equals("A") || answer1.equals("C"))

答案 1 :(得分:0)

else if(answer1.equals("A" + "C")) {

表示:

else if(answer1.equals("AC")) {

“ A” +“ C”是字符串的串联,“ A” +“ C”产生一个新的字符串“ AC”。

答案 2 :(得分:0)

好吧,首先,您不必检查答案是否为A或C,而是要检查答案是否为“ AC”。要实现您所需要的,您可以使用以下代码

if(answer1.equals("B")) {
     correctCount++;
     System.out.println("----Thats the correct answer!----  +");
} else if(answer1.equals("A") || answer1.equals("C")) {
     System.out.println("Wrong answer, sorry");
}

但是说实话,您甚至不需要else if语句,因为他写的任何不是B的字母都是不正确的。除非您也想处理“不存在的答案”

do {
   System.out.println("Please choose A, B or C");
   String answer1 = keyboardInput.nextLine();
} while (!answer1.equals("A") && !answer1.equals("B") && !answer1.equals("C"));

if (answer1.equals("B")) {
   //code...
} else {
   //code...
}

这样,您甚至不必检查它是A还是C,因为您已经检查了它是A B还是C,因此,如果不是B,它将是两个错误答案之一