All pastes #776276 Raw Edit

Stuff

public java v1 · immutable
·published 2007-11-15 23:50 UTC
rendered paste body
import java.io.*;public class A4Q1{	public static void main(String args[])	{		run();	}		public static void run()	{		LinkedList list = new LinkedList();		readInput("A4data.txt", list);		list.print();		// read in command		// store variable || process command || fail			}		/* 	* Reads numbers from file that are seprated by white space.	*/	//public static LinkedList readInput(String fileName)	public static void readInput(String fileName, LinkedList list)	{		BufferedReader fileIn;		String inputLine = "";		String text      = "";		try		{			fileIn = new BufferedReader(new FileReader(fileName));			inputLine = fileIn.readLine();						while( inputLine != null )			{				processString(inputLine, list);				//processString(inputLine, list);				inputLine = fileIn.readLine();			}			fileIn.close();			//return list;		}		catch( IOException ioe ) {}		//return null;	}		public static void processString(String LOC, LinkedList list)	{		final int NEWONEVAR = 1;		final int NEWONEINT = 2;		final int TWOVAR = 1;		final int INTVAR = 2;		final int VARINT = 3;		final int INTINT = 4;				int statusCode;		int firstNodePosition, secondNodePosition, thirdPosition;				String[] stringElements = LOC.trim().split("\\s+");				if( stringElements.length == 3 ) 		{			statusCode = validate3(stringElements);			if(statusCode > 0) 			{				echo("OK!");								firstNodePosition = list.search(stringElements[0]);								if( firstNodePosition > 0)				{					if( statusCode == NEWONEINT )					{						list.getNode(firstNodePosition).getVariable().setValue(stringToInt(stringElements[2]));					}					if( statusCode == NEWONEVAR )					{						secondNodePosition = list.search(stringElements[2]);						if( secondNodePosition > 0 )						{							list.getNode(firstNodePosition).getVariable().setValue(list.getNode(secondNodePosition).getVariable().getValue());						}					}				}				else				{					if( statusCode == NEWONEINT )					{						list.add(new Variable(stringElements[0], stringToInt(stringElements[2])));					}					if( statusCode == NEWONEVAR )					{						secondNodePosition = list.search(stringElements[2]);						if( secondNodePosition > 0 )						{							list.add(new Variable(stringElements[0], list.getNode(secondNodePosition).getVariable().getValue()));						}					}				}			}			else echo("Status", statusCode);		}		else if( stringElements.length == 5 )		{			statusCode = validate5(stringElements);			if(statusCode > 0) echo("OK!");			else echo("Status", statusCode);		}		else if( (stringElements.length == 1) && stringElements[0].equals("Q") )		{			list.print();			list.destroy();			echo("Quit.");		}		else echo("Invalid!", LOC);	}		public static int validate3(String[] stringElements)	{		final int ONEVAR = 1;		final int ONEINT = 2;				String term1, term2;				term1 = stringElements[0];		term2 = stringElements[2];				// ERRORS		if(! stringElements[1].equals("=") ) return -1;		if(! validVariableName(term1) ) 		{			return -2;		}		if(!  (validVariableName(term2) || validIntegerConstant(term2))  ) 		{			return -3;		}				// SUCCESSES		if( validVariableName(term2) )		{			return ONEVAR;		}		if( validIntegerConstant(term2) )		{			return ONEINT;		}				return 0;	}		public static int validate5(String[] stringElements)	{		final int TWOVAR = 1;		final int INTVAR = 2;		final int VARINT = 3;		final int INTINT = 4;				String term1, term2, term3;				term1 = stringElements[0];		term2 = stringElements[2];		term3 = stringElements[4];				// ERRORS		if(! stringElements[1].equals("=") ) return -1;		if(! validVariableName(term1) ) 		{			return -2;		}		if(!  (validVariableName(term2) || validIntegerConstant(term2))  ) 		{			return -3;		}		if(!  (validVariableName(term3) || validIntegerConstant(term3))  )		{			return -4;		}		if(! isValidOperator(stringElements[3].charAt(0)) )		{			return -5;		}				// SUCCESSES		if( validVariableName(term1) && validVariableName(term2) )		{			return TWOVAR;		}		if( validIntegerConstant(term1) && validVariableName(term2) )		{			return INTVAR;		}		if( validVariableName(term1) && validIntegerConstant(term2) )		{			return VARINT;		}		if( validIntegerConstant(term1) && validIntegerConstant(term2) )		{			return INTINT;		}				return 0;	}		public static boolean isChar(char c)	{		return ((c >= 'a')&&(c <= 'z'));	}		public static boolean isInt(char c)	{		return ((c >= '0')&&(c <= '9'));	}		public static boolean isCharOrInt(char c)	{		return ( ((c >= 'a')&&(c <= 'z')) || ((c >= '0')&&(c <= '9')) );	}		public static boolean isValidOperator(char c)	{		return ( (c == '/')||(c == '+')||(c == '-')||(c == '*') );	}		public static boolean validVariableName(String element)	{		String mask = element.toLowerCase();				if(! mask.equals(element) ) return false;		if(! isChar(element.charAt(0)) ) return false;				for( int i = 1; i < element.length(); i++ )		{			if(! isCharOrInt(element.charAt(i)) ) return false;		}				return true;	}		public static boolean validIntegerConstant(String element)	{		String mask = element.toLowerCase();				if(! mask.equals(element) ) return false;				for( int i = 0; i < element.length(); i++ )		{			if(! isInt(element.charAt(i)) ) return false;		}				return true;	}		public static int stringToInt(String Number)	{		int i;		try		{			i = Integer.parseInt(Number);		}		catch( NumberFormatException ex )		{			return -1;		}		return i;	}		public int calculateResult(int i, char c, int j)	{		if( c == '/' )		{			if( j == 0 ) return 0;			return i / j;		}		if( c == '*' ) return i * j;		if( c == '+' ) return i + j;		if( c == '-' ) return i - j;				return 0;	}	public static void echo(String string)	{		System.out.println(string);	}		public static void echo(String string, int value)	{		System.out.println(string + value);	}		public static void echo(String arg1, String arg2)	{		System.out.println(arg1 +" "+ arg2);	}}class LinkedList{	final int NOTFOUND = 0;	final int FOUND = 1;	private Node head;	private int elements;		public LinkedList()	{		head = null;		elements = 0;	}		public void add(Variable variable) 	{		if( head == null )		{			head = new Node(variable, null);		}		else		{			head = new Node(variable, head);		}		elements++;	}		public int search(String name)	{		Node current = head;		int position = 0;				while( current != null )		{			position++;			if( current.getVariable().getName().equals(name) ) return position;			current = current.getNext();		}		return NOTFOUND;	}		public Node getNode(int pos)	{		Node current = head;				if( pos > elements ) return null;				for( int i = 1; i < pos; i++ )		{			current = current.getNext();		}				return current;	}				public void print()	{		Node current = head;				System.out.println("\n\nStart Print\n##########################################################\n\n\n");				while( current != null )		{			System.out.println(current);			current = current.getNext();		}				System.out.println("\n\n\n##########################################################\nEnd Print\n\n");	}		public void destroy()	{		head = null;	}}class Node{	private Variable variable;	private Node next;		public Node(Variable variable, Node next)	{		this.variable = variable;		this.next = next;	}		public Node getNext()	{		return next;	}		public void setNext(Node next)	{		this.next = next;	}	public Variable getVariable()	{		return variable;	}		public String toString()	{		return variable.getName() + " = " + variable.getValue();	}}class Variable{	private String name;	private int value;		public Variable(String name, int value)	{		this.name = name;		this.value = value;	}		public void setValue(int value)	{		this.value = value;	}		public String getName()	{		return name;	}		public int getValue()	{		return value;	}}