Jas*_* Wu 2 java flags boolean
我正在尝试在Java上编写一个简单的计算器程序.我的第一个计算器程序没有任何问题注册布尔标志,表示操作符为true或false(它只处理加法和减法)但是当我实现乘法和除法到布尔值时,所有内容都被注册为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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够理解为什么会这样,那就太好了.我对Java很陌生,所以我可能忽略了一些不一定让人眼前一亮的东西.如果你运行程序,你应该了解我遇到了什么样的问题.
Vee*_*Arr 11
如果你的if语句的最后一块,你有if(isAdd=true)
,等等.这需要if(isAdd==true)
(甚至更好,只是if(isAdd)
).
实际上,您可以通过删除所有if
语句并switch
根据operator
变量执行语句来简化操作.
在代码的最后,你有isAdd=true
.这是赋值运算符.在这份声明中,要分配true
到isAdd
,然后有效地评估is(true) {
.
为了解决这个问题,您应该将语句更改为:
if(isAdd==true) {
int result = var1 + var2;
System.out.println("The result is " + result);
}
Run Code Online (Sandbox Code Playgroud)
而且,你的许多if
陈述都是多余的.您可以更改以下内容:
if (operator==1){
isAdd=true;
}
else{
isAdd=false;
}
Run Code Online (Sandbox Code Playgroud)
对isAdd = (operator == 1);
,等等.