如果语句始终给出相同的答案

|
import java.util.Scanner;

class Practice {

public static void main(String args[]) {

    System.out.println(\"Enter the number of treats you have:\");
    Scanner treatsScanner = new Scanner(System.in);
    int treats = (treatsScanner.nextInt());

    System.out.println(\"Enter the number of hamsters you have:\");
    Scanner hamstersScanner = new Scanner(System.in);
    int hamsters = (hamstersScanner.nextInt());

    System.out.println(\"How many treats does each hamster need?\");
    Scanner neededTreatsScanner = new Scanner(System.in);
    int neededTreats = (neededTreatsScanner.nextInt());     

    int treatsPerHamster = treats / hamsters;
    boolean enoughTreats = treatsPerHamster >= neededTreats;        

    if (enoughTreats = true) {
        System.out.println(\"There are enough treats for all the hamsters!\");
    }
    else if (enoughTreats = false) {
        System.out.println(\"Oh no! There aren\'t enough treats!\");        
    }

}
}
有人可以向我解释为什么该程序返回“所有仓鼠都有足够的食物!”,而不管是否需要“ neededTreats”>“ treatsPerHamster”? 谢谢。     
已邀请:
        您正在将true值分配给足够的治疗。 尝试使用相等运算符而不是赋值:
if (enoughtreats == true) {
...
}
或者简单地:
if(enoughtreats) {
...
}
    
        您应该使用
==
而不是
=
    if (enoughTreats == true) {
        System.out.println(\"There are enough treats for all the hamsters!\");
    }
    else {
        System.out.println(\"Oh no! There aren\'t enough treats!\");        
    }
请记住,
==
是比较运算符,
=
是赋值运算符。 而且正如Mike所说,只有
if(enoughTreats)
就能帮到您。无需使用
==
运算符! 实际上,您根本不需要布尔变量
enoughTreats
。您可以这样写您的条件:
if (treatsPerHamster >= neededTreats) {
    // do one thing
}
else {
    // do other
}
    
        在Java中,\'= \'运算符为变量分配值。在这种情况下,
if (enoughTreats = true)
将值\'true \'分配给\'enoughTreats \',然后检查\'enoughTreats \'是否为true(始终是)。 相反,您想放
if (enoughTreats == true)
这样它将检查足够的Treats是对还是错。     
        为相等使用
==
,而不是not4ѭ。     
        
if (enoughTreats = true)
通过使用
=
,您将are18ѭ分配给
enoughTreats
。请改用
==
比较运算符。     
        您需要更改这两个语句
if (enoughTreats = true) 

else if (enoughTreats = false)
进入
if (enoughTreats == true) 

else if (enoughTreats == false)
您还可以通过以下简单输入以下代码来缩短代码并获得完全相同的效果:
if (enoughTreats)

else
如果您将布尔变量本身放在if语句的括号内,则if语句将检查其是否为真,因此您无需键入\'== true。\'还将代码中的else if语句替换为简单的\'else \',因为如果足够的变量not等于true,则else代码将自动执行,而无需您专门说明条件。     
        几件事要注意并添加到列出的答案 只需一台扫描仪就足够
Scanner inputScanner = new Scanner(System.in);
(...Scanner.nextInt());
大括号不是真的必要 您可能需要考虑对
hamsters
进行非零检查! 处理输入中的非整数和-ve数字 当
if(){}
仅具有一次布尔检查时,不需要
else if(){}
,只需
else{
就足够了     

要回复问题请先登录注册