如何使用java中的arraylist和while循环,将先前操作的执行结果生成计算器?

如何使用java中的arraylist和while循环,将先前操作的执行结果生成计算器?,java,arraylist,Java,Arraylist,正在尝试使用arrayList制作计算器。 用户插入整数,然后键入加法、减法、乘法或除法,用这些整数执行数学运算,当用户键入完毕时,程序结束。 节目如下: import java.util.Scanner; import java.util.ArrayList; class just{ public static void main(String[] args){ Scanner input = new Scanner(System.in); ArrayList&l

正在尝试使用arrayList制作计算器。 用户插入整数,然后键入加法、减法、乘法或除法,用这些整数执行数学运算,当用户键入完毕时,程序结束。 节目如下:

import java.util.Scanner;
import java.util.ArrayList;

class just{

    public static void main(String[] args){

    Scanner input = new Scanner(System.in);
    ArrayList<Integer> element = new ArrayList<Integer>();

    String operation;
    int counter;
    int result = 0;

    while(true){ 

        operation = (input.nextLine()).trim();

        if(operation !=null && !operation.isEmpty()){

        if (operation.equalsIgnoreCase("done")){ break;}

        try{    
            counter = Integer.parseInt(operation);
            element.add(counter);   
        }catch(NumberFormatException e){

            if("add".equalsIgnoreCase(operation)){

                for( int i : element){
                        result += i;

                }

            System.out.println("Result is: "+result);
            element.clear();
            }else if("subtract".equalsIgnoreCase(operation…
                for( int i : element){
                result -= i;
                }

                System.out.println("Result is: "+result);
                element.clear();    

            }else if("multiply".equalsIgnoreCase(operation…
                for( int i : element){
                    result *= i;
                }
                System.out.println("Result is: "+result);
                element.clear();

            }else if("divide".equalsIgnoreCase(operation))…
                for( int i : element){
                    result /= i;    
                }   
                System.out.println("Result is: "+result);
                element.clear();
            }else{
                System.out.println("Put some numbers, then type add , multiply, subtract or divide to get the result, or type done to exit.");
            }   
        }   
        }else{  
            System.out.println("Please either enter an integer or type done.");
        }   
        }
    }
}
import java.util.Scanner;
导入java.util.ArrayList;
班级公正{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
ArrayList元素=新的ArrayList();
串操作;
整数计数器;
int结果=0;
虽然(正确){
操作=(input.nextLine()).trim();
if(operation!=null&!operation.isEmpty()){
if(operation.equalsIgnoreCase(“done”){break;}
试试{
计数器=整数.parseInt(操作);
元素。添加(计数器);
}捕获(数字格式){
如果(“添加”.equalsIgnoreCase(操作)){
for(int i:元素){
结果+=i;
}
System.out.println(“结果为:”+Result);
元素。clear();
}else if(“减法”).equalsIgnoreCase(操作…
for(int i:元素){
结果-=i;
}
System.out.println(“结果为:”+Result);
元素。clear();
}else if(“multiply”).equalsIgnoreCase(操作…
for(int i:元素){
结果*=i;
}
System.out.println(“结果为:”+Result);
元素。clear();
}否则如果(“divide”.equalsIgnoreCase(操作))…
for(int i:元素){
结果/=i;
}   
System.out.println(“结果为:”+Result);
元素。clear();
}否则{
println(“输入一些数字,然后键入add、multiply、subtract或divide以获得结果,或者键入done以退出”);
}   
}   
}否则{
System.out.println(“请输入整数或键入“完成”);
}   
}
}
}
Add
subtract
工作正常。
Multiply
divide
工作正常,但是如果第一个操作是
Multiply
divide
则结果变为
0
,因为变量
result
的初始值为0,或者如果我为
乘法设置不同的变量
用初始值
1
除以
,而不是
0
,它仍然不起作用,因为如果我为
生成不同的变量,那么我必须用它乘以变量
结果(由于以前执行的
加法
和/或
减法
的结果,并且由于
结果
的初始值为
0
,因此现在将始终产生
0
。 如何克服这个问题?

您的问题是:

int result = 0;

不要将result设置为0,而是将其设置为
整数
并将其设置为
null
。然后,您的第一个操作应该是检查
结果
是否为
null
,如果是,则将
结果
设置为
数组列表
中的第一个
int
元素(确保不要使用该元素两次).

请将代码格式化为可读的格式。