/*---------------------------------------------------------------------------- * Klasse: Parser.java * Beschreibung: Superclass aller Bahnelemente * Autor: Jack Meyer * Datum: November, 1997 * --------------------------------------------------------------------------- */ abstract class Parser { /* * Parser um String Parameter in Numerische Parameter umzurechnen */ protected static double[] ParseStringToDouble (String aStringParameter) throws ParsingException, NumberFormatException, StringIndexOutOfBoundsException { /* zähle die Arguments */ int scanIndex =0; int numberOfArguments =1; do { scanIndex = aStringParameter.indexOf (',',scanIndex); /* String.indexOf() gibt -1 zurück, wenn keine Zeichen mehr gefunden */ if (scanIndex >=0) { /* noch ein Komma gefunden -> ein weiters Argument */ numberOfArguments ++; scanIndex ++; }; } while (scanIndex >=0); /* generiere den Argumenten-Array */ double[] doubleArg = new double[numberOfArguments]; /* suche Klammer auf */ scanIndex = aStringParameter.indexOf('(') +1; if (scanIndex <=0 ) throw new ParsingException ("Open paranthesis missing"); /* lese Argumente */ int scanEnd =0; for (int counter =0; counter < numberOfArguments; counter++) { /* suche nächstes Komma */ scanEnd = aStringParameter.indexOf (',', scanIndex); /* test ob noch eines gefunden, sonst lese bis Ende */ /* teste zuerst auf ) */ if (scanEnd <0) {scanEnd = aStringParameter.indexOf(')', scanIndex);}; if (scanEnd <0) {scanEnd = aStringParameter.length() -1;}; /* bilde Substring */ String stringArgument = aStringParameter.substring (scanIndex,scanEnd); doubleArg[counter] = Double.valueOf(stringArgument).doubleValue(); scanIndex = scanEnd +1; } /* sende ArgumentenArray zurück */ return doubleArg; }; };