public class StackOper { |
private IntStack oper1; |
private IntStack oper2; |
private IntStack result; |
|
private String soper1; |
private String soper2; |
|
public StackOper(IntStack stack1, IntStack stack2) { |
oper1 = stack1; |
oper2 = stack2; |
result = new IntStack(); |
} |
|
public void pushNum(String soper1, String soper2) { |
this.soper1 = soper1; |
this.soper2 = soper2; |
push(soper1, oper1); |
push(soper2, oper2); |
} |
|
private void push(String s, IntStack stack) { |
char num[] = s.toCharArray(); |
for (int i = 0; i < num.length; i++) { |
if (num <= 57 && num >= 48) |
stack.push(num - 48); |
else |
throw new UnsupportedOperationException("Not Digital"); |
} |
} |
|
public void add() { |
int addition = 0; |
while (!oper1.empty() && !oper2.empty()) { |
int sum = oper1.pop() + oper2.pop() + addition; |
if (sum < 10) { |
result.push(sum); |
addition = 0; |
} else { |
result.push(sum - 10); |
addition = 1; |
} |
} |
|
while (addition == 1) { |
if (!oper1.empty()){ |
int sum = oper1.pop() + addition; |
if (sum < 10) { |
result.push(sum); |
addition = 0; |
} else { |
result.push(sum - 10); |
addition = 1; |
} |
}else if (!oper2.empty()){ |
int sum = oper2.pop() + addition; |
if (sum < 10) { |
result.push(sum); |
addition = 0; |
} else { |
result.push(sum - 10); |
addition = 1; |
} |
}else { |
result.push(1); |
addition = 0; |
} |
} |
|
while (!oper1.empty()) |
result.push(oper1.pop()); |
|
while (!oper2.empty()) |
result.push(oper2.pop()); |
} |
|
public void printResult() { |
System.out.print("Operator1:" + soper1 + '
'); |
System.out.print("Operator2:" + soper2 + '
'); |
System.out.print("Result :"); |
while (result.empty() == false) |
System.out.print(result.pop()); |
System.out.println(); |
} |
|
public static void main(String[] args) { |
IntStack int1 = new IntStack(); |
IntStack int2 = new IntStack(); |
|
StackOper so = new StackOper(int1, int2); |
so.pushNum("1313", "19"); |
so.add(); |
so.printResult(); |
} |
} |