我正在尝试创建一个程序,在输入的数字之间插入两个可能的操作(*和+)并跟踪总数。该程序只是从左到右阅读,因此不适用BEDMAS
例如,如果我输入:1 2 3
输出为1 + 2 + 3 - > Sum = 6
或输出为1 + 2 * 3 - > Sum = 9
或输出为1 * 2 + 3 - >总和= 5 等
我遇到了困难,因为我的程序继续从空的ArrayList(数字)尝试numbers.remove()
。
public static void calculate(ArrayList<Integer> numbers, int target){
ArrayList<Integer> temp_array = new ArrayList<Integer>(numbers);
int sum = 0;
int n = (numbers.size() - 1);
System.out.println("This is where we calcutale L");
for (int i = 0; i < Math.pow(2, n); i++) {
String bin = Integer.toBinaryString(i);
while (bin.length() < n)
bin = "0" + bin;
char[] chars = bin.toCharArray();
char[] charArray = new char[n];
while(charArrayCount < Math.pow(2,n)){
for (int j = 0; j < chars.length; j++) {
charArray[j] = chars[j] == '0' ? '+' : '*';
}
for(char c : charArray){
int current = numbers.get(0);
if (c == '+'){
sum = sum + current;
}
numbers.remove(0);
System.out.println(sum);
}
numbers = temp_array;
sum = 0;
}
}
}