Vous êtes sur la page 1sur 6

package group2projectbscs2;

import java.util.*;
public class Group2ProjectBSCS2 {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
ArrayList<String> stack = new ArrayList<>();
ArrayList<String> out = new ArrayList<>();
int z = 0;
String exp = "";
while (z == 0) {//for infinite looping ends when the z is incremented by
choosing e
System.out.print("Select Convertion:\n\nA.Infix To Postfix\tC.Postfix
To Infix\nB.Infix To Prefix\tD.prefix to infix\nE.Exit The
Program\n\nSelect(Letter):");
String sel = sca.nextLine();
if (sel.toLowerCase().equals("a") || sel.toLowerCase().equals("b") ||
sel.toLowerCase().equals("c") || sel.toLowerCase().equals("d")) {
System.out.print("Enter Expression:");
exp = new Scanner(System.in).nextLine();
System.out.println("");
}
String var = "";
switch (sel.toLowerCase()) {
case "a":
intopos(exp);

break;
case "b":
intopre(exp);
break;
case "c":
var = "" + exp.charAt(0);
while (var.equals("/") || var.equals("*") || var.equals("%") ||
var.equals("^") || var.equals("+") || var.equals("-")) {
System.out.print("Invalid Expression Please Try
Again\nEnter Expression:");
exp = new Scanner(System.in).nextLine();
var = "" + exp.charAt(0);
}
postoin(exp);
break;
case "d":
var = "" + exp.charAt(0);
while (!(var.equals("/") || var.equals("*") || var.equals("%")
|| var.equals("^") || var.equals("+") || var.equals("-"))) {
System.out.print("Invalid Expression Please Try
Again\nEnter Expression:");
exp = new Scanner(System.in).nextLine();
var = "" + exp.charAt(0);
}
pretoin(exp);
break;
case "e":
z++;//z becomes 1 thus ending the while loop
break;
default:
System.out.println("Wrong Input Please Try Again!\n");//
}
}
}
public static void intopos(String ex) {
ArrayList<String> stack = new ArrayList<>();
ArrayList<String> out = new ArrayList<>();
System.out.println("Infix To Postfix:\n");
System.out.println("Token:\t\tStack:\t\tOutput:\t\t\tRemarks:");
for (int x = 0; x < ex.length(); x++) {
String tempO = "";
String tempR = "";
String tempS = "";
String var = "" + ex.charAt(x);
if (var.equals("^")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {
if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("+") ||
stack.get(y).equals("-") || stack.get(y).equals("*") || stack.get(y).equals("/") ||
stack.get(y).equals("%")) {
break;
}
tempR = tempR + "Pop: " + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "AND Push: " + var;
stack.add(var);
}
} else if (var.equals("/") || var.equals("*") || var.equals("%")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {
if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("+") ||
stack.get(y).equals("-")) {
break;
}
tempR = tempR + "Pop: " + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "AND Push: " + var;
stack.add(var);
}
} else if (var.equals("+") || var.equals("-")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {

if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
tempR = tempR + "Pop: " + stack.get(y) + " AND";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "Push: " + var;
stack.add(var);
}
} else if (var.equals("(")) {
tempR = tempR + "Push: " + var;
stack.add(var);
} else if (var.equals(")")) {
tempR = tempR + "Pop: ";
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("(")) {
stack.remove(y);
break;
}
tempR = tempR + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}

} else {
tempR = tempR + "Output: " + var;
out.add(var);
}
if (!stack.isEmpty()) {
for (int b = 0; b < stack.size(); b++) {
tempS = tempS + stack.get(b);
}
}

if (!out.isEmpty()) {
for (int b = 0; b < out.size(); b++) {
tempO = tempO + out.get(b);
}
}

System.out.println(var + "\t\t" + tempS + "\t\t" + tempO + "\t\t\t" +


tempR);
}

if (!stack.isEmpty()) {
for (int b = stack.size() - 1; b >= 0; b--) {
out.add(stack.get(b));
}
}
String done = "";
for (int xx = 0; xx <= out.size() - 1; xx++) {
done += out.get(xx);
}
System.out.println("\t\t\t\t" + done + "\t\t\t" + "Pop All inside stack");
}

public static void intopre(String ex) {


ArrayList<String> stack = new ArrayList<>();
ArrayList<String> out = new ArrayList<>();
System.out.println("Infix To Prefix:\n");
System.out.println("Token:\t\tStack:\t\tOutput:\t\t\tRemarks:");
for (int x = ex.length() - 1; x >= 0; x--) {
String tempO = "";
String tempR = "";
String tempS = "";
String var = "" + ex.charAt(x);
if (var.equals("^")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {
if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("+") ||
stack.get(y).equals("-") || stack.get(y).equals("*") || stack.get(y).equals("/") ||
stack.get(y).equals("%")) {
break;
}
tempR = tempR + "Pop: " + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "AND Push: " + var;
stack.add(var);
}
} else if (var.equals("/") || var.equals("*") || var.equals("%")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {
if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("+") ||
stack.get(y).equals("-")) {
break;
}
tempR = tempR + "Pop: " + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "AND Push: " + var;
stack.add(var);
}
} else if (var.equals("+") || var.equals("-")) {
if (stack.isEmpty()) {
stack.add(var);
tempR = tempR + "Push: " + var;
} else {
if (!stack.contains("(")) {
for (int y = stack.size() - 1; y >= 0; y--) {
tempR = tempR + "Pop: " + stack.get(y) + " AND";
out.add(stack.get(y));
stack.remove(y);
}
}
tempR = tempR + "Push: " + var;
stack.add(var);
}
} else if (var.equals("(")) {
tempR = tempR + "Push: " + var;
stack.add(var);
} else if (var.equals(")")) {
tempR = tempR + "Pop: ";
for (int y = stack.size() - 1; y >= 0; y--) {
if (stack.get(y).equals("(")) {
stack.remove(y);
break;
}
tempR = tempR + stack.get(y) + " ";
out.add(stack.get(y));
stack.remove(y);
}
} else {
tempR = tempR + "Output: " + var;
out.add(var);
}
if (!stack.isEmpty()) {
for (int b = 0; b < stack.size(); b++) {
tempS = tempS + stack.get(b);
}
}
if (!out.isEmpty()) {
for (int b = 0; b < out.size(); b++) {
tempO = tempO + out.get(b);
}
}
System.out.println(var + "\t\t" + tempS + "\t\t" + tempO + "\t\t\t" +
tempR);
}
if (!stack.isEmpty()) {
for (int b = stack.size() - 1; b >= 0; b--) {
out.add(stack.get(b));
}
}
String done = "";
for (int xx = 0; xx <= out.size() - 1; xx++) {
done += out.get(xx);
}
System.out.println("\t\t\t\t" + done + "\t\t\t" + "Pop All inside stack");
}
public static void postoin(String ex) {
ArrayList<String> group = new ArrayList<>();
System.out.println("Postfix To Infix\n");
System.out.println("Token:\t\tExpression:\t\tRemarks:");
for (int x = 0; x < ex.length(); x++) {
String tempE = "";
String tempR = "";
String var = "" + ex.charAt(x);
System.out.print(var + "\t\t");
if (var.equals("/") || var.equals("*") || var.equals("%") ||
var.equals("^") || var.equals("+") || var.equals("-")) {
group.set(group.size() - 2, "(" + group.get(group.size() - 2) + var
+ group.get(group.size() - 1) + ")");
tempR += "Combine:" + group.get(group.size() - 2) + " and " +
group.get(group.size() - 1) + " with " + var;
group.remove(group.size() - 1);
} else {
group.add(var);
tempR += "Stack" + var;
}
for (int xx = 0; xx < group.size(); xx++) {
tempE += group.get(xx);
}
System.out.println(tempE + "\t\t" + tempR);
}
}
public static void pretoin(String ex) {
ArrayList<String> group = new ArrayList<>();
System.out.println("Prefix To Infix\n");
System.out.println("Token:\t\tExpression:\t\tRemarks:");
for (int x = ex.length() - 1; x >= 0; x--) {
String tempE = "";
String tempR = "";
String var = "" + ex.charAt(x);
System.out.print(var + "\t\t");
if (var.equals("/") || var.equals("*") || var.equals("%") ||
var.equals("^") || var.equals("+") || var.equals("-")) {
group.set(group.size() - 2, "(" + group.get(group.size() - 1) + var
+ group.get(group.size() - 2) + ")");
tempR += "Combine:" + group.get(group.size() - 1) + " and " +
group.get(group.size() - 2) + " with " + var;
group.remove(group.size() - 1);
} else {
group.add(var);
tempR += "Stack" + var;
}
for (int xx = 0; xx < group.size(); xx++) {
tempE = group.get(xx);
}
System.out.println(tempE + "\t\t\t" + tempR);
}
}
}

Vous aimerez peut-être aussi