尝试使用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.");
}
}
}
}
Add
和subtract
工作正常。 Multiply
和divide
也正常工作,但如果第一个操作是multiply
或divide
,则结果变为0
,因为变量{{1}的初始值}是0,或者如果我为result
和multiply
创建了具有初始值divide
而不是1
的不同变量,它仍然不起作用,因为如果我做出不同的话0
和multiply
的变量然后我必须将变量divide
与它相乘(因为执行了先前result
和/或add
的结果,并且subtract
的初始值为result
,现在它将始终显示0
。
如何克服这个问题?
答案 0 :(得分:0)
你的问题在这里:
int result = 0;
不是将结果设置为0,而是将其设为Integer
并将其设置为null
。然后,您的第一个操作应该是检查result
是null
,如果是,请将result
设置为int
中的第一个ArrayList
元素(确保不要两次使用该元素。)