All pastes #911951 Raw Edit

Miscellany

public java v1 · immutable
·published 2008-02-21 00:52 UTC
rendered paste body
import java.util.Scanner;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintWriter;/*Tiffany Miller * tmm211 * February 20 2008 * The purpose of this program is to define a class that encapsulates the implementation * of a stack, use that stack in the applications of previous assignements, and practice * arrays. */public class P5{  public static void main(String[] args)  {    Scanner inputFile = null;    PrintWriter outputFile = null;    boolean error = false;    char operand = ' ';    String operation = "";    String line ="";    int linecounter= 2;        Stack[] Hanoi= new Stack[3];        //The try, catch loops are used to input file hanoi.txt and output     //the file to P5.txt.    try    {      inputFile = new Scanner(new FileInputStream("hanoi.txt"));    }        catch(FileNotFoundException e)    {      System.out.println("hanoi.txt was not found or could not be opened");      System.exit(0);    }        try    {      outputFile = new PrintWriter(new FileOutputStream("P5.txt"));    }    catch(FileNotFoundException e)    {      System.out.println("P5.txt could not be opened or created");      System.exit(0);    }        for( int i = 0; i< Hanoi.length; i++)      Hanoi[i] = new Stack();        line= inputFile.nextLine();    Hanoi[0]= new Stack(line);        while ((inputFile.hasNextLine()) && (error == false))    {      operation = inputFile.next();      inputFile.nextLine();            if(operation.equals("push0"))      {        if(operand!=' ' && (Hanoi[0].isEmpty() || operand < Hanoi[0].getTop()))               {          Hanoi[0].push(operand);          operand = ' ';        }        else        {          outputFile.println("Invalid push at line: " + linecounter +". Letter is too big to be pushed onto stack0");          error = true;        }      }      else if( operation.equals("push1"))      {        System.out.println(operand + " " + Hanoi[1].toString());                if (operand !=' ' && (Hanoi[1].isEmpty() || operand < Hanoi[1].getTop()))         {          Hanoi[1].push(operand);          operand =' ';        }        else        {          outputFile.println("Invalid push at line: " + linecounter + ".The letter to be pushed is too big for stack1");          error = true;        }      }      else if(operation.equals("push2"))      {        if(operand !=' ' && (Hanoi[2].isEmpty() || operand < Hanoi[2].getTop()))        {          Hanoi[2].push(operand);          operand =' ';        }        else        {          outputFile.println("Invalid push at line: " + linecounter + ".The letter to be pushed is too big for stack2");          error = true;        }      }                                              else if( operation.equals("pop0") && !Hanoi[0].isEmpty())      {        Hanoi[0].pop();      }      else if( operation.equals("pop1") && !Hanoi[1].isEmpty())      {        Hanoi[1].pop();      }      else if( operation.equals("pop2")&& !Hanoi[2].isEmpty())      {        Hanoi[2].pop();      }      else      {        outputFile.println("Invalid pop at line: " + linecounter + ". Stack is empty");        error= true;      }      outputFile.println("operand=" + operand);      linecounter++;    }    outputFile.println("Stack0: " + Hanoi[0].toString());    outputFile.println("Stack1: " + Hanoi[1].toString());    outputFile.println("Stack2: " + Hanoi[2].toString());        inputFile.close();    outputFile.close();      }}class Stack    {      private String stack;            public Stack () //constructor creates empty stack      {        stack = "";      }            public Stack (String St) //constructor a stack to its initial contents      {        stack = St;      }            public boolean isEmpty () //returns a boolean that says whether there is data in the stack      {        if(stack.length() == 0)          return true;        else          return false;      }            public char getTop () // an accessor that returns the char at the top of the stack      {        char operand;        operand = stack.charAt(0);        return operand;      }            public void push (char c) // void method with a char argument that pushes char on stack      {       stack = c + stack;      }            public char pop() // does implementation of pop method, returning a char      {        char temp;        temp = stack.charAt(0);        stack = stack.substring(1);        return temp;      }            public String toString() //needed for printing stack to file      {        return stack;      }            public boolean equals(Stack other) //helps compare two stacks       {        if(stack.equals(other.stack))          return true;        else           return false;      }      }