如何使用arraylist和while循环在java中使用以前的操作执行结果计算器?

时间:2013-09-17 15:39:15

标签: java arraylist

尝试使用arrayList创建计算器。 user插入整数,然后键入add,subtract,multiply或divide,用这些整数执行数学运算,当用户类型完成后,程序结束。 这是程序:

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

Addsubtract工作正常。 Multiplydivide也正常工作,但如果第一个操作是multiplydivide,则结果变为0,因为变量{{1}的初始值}是0,或者如果我为resultmultiply创建了具有初始值divide而不是1的不同变量,它仍然不起作用,因为如果我做出不同的话0multiply的变量然后我必须将变量divide与它相乘(因为执行了先前result和/或add的结果,并且subtract的初始值为result,现在它将始终显示0。 如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

你的问题在这里:

int result = 0;

不是将结果设置为0,而是将其设为Integer并将其设置为null。然后,您的第一个操作应该是检查resultnull,如果是,请将result设置为int中的第一个ArrayList元素(确保不要两次使用该元素。)