Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“检查标志”;如果(flag=true)";aways在Java中是真的吗?_Java_Boolean_Flags - Fatal编程技术网

“检查标志”;如果(flag=true)";aways在Java中是真的吗?

“检查标志”;如果(flag=true)";aways在Java中是真的吗?,java,boolean,flags,Java,Boolean,Flags,我正在尝试用Java编写一个简单的计算器程序。我的第一个计算器程序在注册表示运算符为真或假的布尔标志时没有任何问题(它只处理加法和减法),但当我在布尔值中实现乘法和除法时,所有内容都注册为真,以便列出每个操作的所有结果 package com.arrdude.jason; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.lang.Ma

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

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语句,你有
If(isAdd=true)
等等。这需要是
if(isAdd==true)
(或者更好,只要
if(isAdd)


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

在代码末尾,您有
isAdd=true
。这是赋值运算符。在此语句中,您将
true
赋值给
isAdd
,然后有效地计算
is(true){

为了解决此问题,您应该将语句更改为:

if(isAdd==true) {
    int result = var1 + var2;
    System.out.println("The result is " + result);
}
此外,许多
if
语句是多余的。您可以更改以下内容:

if (operator==1){
    isAdd=true;
}
else{
    isAdd=false;
}

to
isAdd=(operator==1);
,依此类推。

如果
语句是赋值,而不是相等检查:

if(isAdd=true)
这将始终是
真的

改为:

if(isAdd==true)
或者只是:

if(isAdd)

其他
if
语句也是如此。

一个问题是所有条件
if(is…=true)
始终为真。
您不需要显式地将
is…
设置为
false
,因为您已经在顶部将其设置为
false

我相当肯定编译器会就此发出警告……如果是这样,我会感到羞愧……我发现避免这种微妙错误的一种方法是翻转比较顺序(例如
if(true==isAdd)
).然后,如果我省略了第二个等号,我将得到一个关于赋值中非法左值的编译器错误。
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;
int result = var1 + var2;
System.out.println("The result is " + result);
}
else if(operator==2){
 isSub=true;
int result = var1 - var2;
System.out.println("The result is " + result);
}
else if (operator==2){
isSub=true;
int result = var1 - var2;
System.out.println("The result is " + result);
}

else if (operator==3){
isMult=true;
int result = var1 * var2;
System.out.println ("The result is " + result);
}

else if (operator==4){
isDiv=true;
int result = var1 / var2;
System.out.println("The result is " + result);
}
}}