java - 在 Java 中检查标志 "if(flag=true)"总是正确的?

标签 java boolean flags

我正在尝试用 Java 编写一个简单的计算器程序。我的第一个计算器程序在注册表示运算符为真或假的 boolean 标志时没有任何问题(它只处理加法和减法),但是当我将乘法和除法实现为 boolean 值时,所有内容都被注册为 true,以便所有列出每个操作的结果。

package com.arrdude.jason;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.lang.Math;

public class RegularCalculator {

public static void main(String[] args) {

    int var1 = 0;
    int var2 = 0;
    int operator = 0;
    boolean isAdd=false, isSub=false, isMult=false, isDiv=false;


try{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println ("Enter the first number");
    var1=Integer.parseInt(br.readLine());

    System.out.println ("Enter the second number");
    var2=Integer.parseInt(br.readLine());

    System.out.println ("Which function do you wish you use? Enter 1 for addition, 2 for subtraction, 3 for multiplication, 4 for division");
    operator=Integer.parseInt(br.readLine());

}
catch(NumberFormatException ne) {
    System.out.println("Invalid number" + ne);
    System.exit(0);
}
catch(IOException ioe) {
    System.out.println ("IO Error" + ioe);
    System.exit(0);
}

if (operator==1){
    isAdd=true;
}
else{
    isAdd=false;
}
if (operator==2){
    isSub=true;
}
else{
    isSub=false;
}
/*if (operator==3){
    isMult=true;
}
else {
    isMult=false;
}
if (operator==4){
    isDiv=true;
}
else {
    isDiv=false;
}
*/
if(isAdd=true) {
    int result = var1 + var2;
    System.out.println("The result is " + result);
}
if(isSub=true) {
    int result = var1 - var2;
    System.out.println("The result is " + result);
}
if(isMult=true) {
    int result = var1 * var2;
    System.out.println ("The result is " + result);
}
if(isDiv=true) {
    int result = var1 / var2;
    System.out.println("The result is " + result);
}
}

}

如果有人能理解为什么会发生这种情况,那就太好了。我对 Java 还很陌生,所以我可能忽略了一些对于绿眼睛来说不一定不合适的东西。如果您运行该程序,您应该了解我遇到了什么样的问题。

最佳答案

如果你的最后一个 if 语句 block ,你有 if(isAdd=true) 等等。这需要是 if(isAdd==true) (或者更好,只是 if(isAdd))。

事实上,您可以通过删除所有 if 语句并基于 operator 执行 switch 语句来简化操作变量。

关于java - 在 Java 中检查标志 "if(flag=true)"总是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777825/

相关文章:

c - C中是否有bool的格式说明符?

c++ - && 和 & 与 bool(s) 之间有什么区别吗?

boolean - 什么时候 boolean 值比整数好?

android - 从 TextView 中删除删除线

java - 通过配置更改保留对象的静态模式

java - hibernate 4.x 中的注册函数

java - Android手机导航-NavController Action类未生成

java - 如何在 Java 中解析 JSON 对象数组

types - MiniDumpWriteDump 及其 MINIDUMP_TYPE 类型

go - 如何将 bool 参数传递给标志