如果声明总是给出相同的答案

BJP*_*BJP 1 java if-statement boolean

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!");        
    }

}
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么这个程序会返回"所有仓鼠都有足够的食物!" 无论"needTreats">"treatsPerHamster"?

谢谢.

ada*_*shr 7

你应该使用==而不是=

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

请记住,这==是比较运算符,=是赋值运算符.

就像迈克提到的那样,只要if(enoughTreats)你能为你做到这一点.无需使用==操作员!

事实上,您根本不需要布尔变量enoughTreats.你可以这样写你的条件:

if (treatsPerHamster >= neededTreats) {
    // do one thing
}
else {
    // do other
}
Run Code Online (Sandbox Code Playgroud)