0

尝试使用 arrayList 制作计算器。用户插入整数,然后键入加、减、乘或除,它们对这些整数执行数学运算,当用户键入 done 时,程序结束。这是程序:

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

Add并且subtract工作正常。Multiply并且divide工作也正常,但是如果第一次操作是multiplydivide结果变为0,因为变量的初始值为result0,或者如果我为multiplydivide初始值1而不是创建不同的变量0,它仍然不起作用,因为如果我做出不同的变量multiplydivide然后我必须将变量与它相乘(因为先前和/或result的执行结果,并且作为初始值,它现在将一直产生。如何克服这个问题?addsubtractresult00

4

1 回答 1

0

你的问题在这里:

int result = 0;

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

于 2013-09-17T15:46:11.067 回答