如何使用java中的arraylist和while循环,将先前操作的执行结果生成计算器?
正在尝试使用arrayList制作计算器。 用户插入整数,然后键入加法、减法、乘法或除法,用这些整数执行数学运算,当用户键入完毕时,程序结束。 节目如下:如何使用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
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
元素(确保不要使用该元素两次).请将代码格式化为可读的格式。