A> |
Zur Lösung des Übungsblattes Nr. 3 (und vieler weiterer Übungsblätter) ist es notwendig, Parameter von der Kommandozeile auszulesen. Java ermöglicht es, Eingabedaten an eine Java-Application weiterzugeben, indem diese direkt in Anschluß an den Namen der zu startenden Application angegeben werden. Die angegebenen Parameter werden inform eines String-Arrays (Also einem Feld von Zeichenketten) der statischen Methode main als Parameter zur Verfügung gestellt. Um diese Werte als als Integer-Werte (bzw. Fließkommawerte) weiterverarbeiten zu können, ist eine Konvertierung der Eingabe-Strings notwendig.
Da eine solche Operation nicht im Rahmen der Vorlesung behandelt wird, folgt ein Beispiel:
Das nachfolgende Java-Programm liest drei Parameter von der Kommandozeile, konvertiert die ersten beiden eingegebenen Strings in Integer-Werte und den letzten eingegebenen String in einen Fließkommawert (double) und gibt diese anschließend wieder aus. Da die Methode Double.parseDouble(..) erst ab JDK1.2 zur Verfügung steht, wird als Alternative die Methode Double.valueOf(..) für JDK1.1.X vorgeschlagen.
public class ParameterBeispiel { public static void main(String[] args) { int parameter0= Integer.parseInt(args[0]); int parameter1= Integer.parseInt(args[1]); // mit JDK1.2: double parameter2= Double.parseDouble(args[2]); // mit JDK1.1.x: double parameter2= Double.valueOf(args[2]).doubleValue(); System.out.println("Parameter0= " + parameter0); System.out.println("Parameter1= " + parameter1); System.out.println("Parameter2= " + parameter2); }; };
Nach der Compilation des Source-Codes, kann man das Programm starten und
diesem drei Parameter mitliefern. Die ersten beiden Parameter werden nach
int
konvertiert und der letzte Wert nach double
und
anschließend wieder ausgegeben. Falls Sie zu wenige Parameter angeben oder
diese nicht aus Integerwerten bestehen, wird das Programm mit einem Fehler
(Exception) abgebrochen.
Beispielaufruf:
> java ParameterBeispiel 1 2 3 Parameter0= 1 Parameter1= 2 Parameter2= 3
public static int parseInt(String s) throws NumberFormatException
'-'
('\u002d') to indicate a negative value.
s
- a string.
public static double parseDouble(String s) throws NumberFormatException
String
, as performed by the valueOf
method of class Double
.
s
- the string to be parsed.
valueOf(String)
public static Double valueOf(String s) throws NumberFormatException
Double
object initialized to the value
represented by the specified string. The string s
is
interpreted as the representation of a floating-point value and a
Double
object representing that value is created and
returned.
If s
is null
, then a
NullPointerException
is thrown.
Leading and trailing whitespace characters in s are ignored. The rest
of s
should constitute a FloatValue as described
by the lexical rule:
where Sign and FloatingPointLiteral are as defined in §3.10.2 of the Java Language Specification. If it does not have the form of a FloatValue, then aFloatValue: Signopt FloatingPointLiteral
NumberFormatException
is
thrown. Otherwise, it is regarded as representing an exact decimal
value in the usual "computerized scientific notation"; this exact
decimal value is then conceptually converted to an "infinitely
precise" binary value that is then rounded to type double
by the usual round-to-nearest rule of IEEE 754 floating-point
arithmetic. Finally, a new object of class Double
is
created to represent the double
value.
s
- the string to be parsed.
Double
initialized to the
value represented by the string argument.
Zur Berechnung der Quadratwurzel einer Fließkommazahl steht in Java die statische Methode Math.sqrt(..) zur Verfügung. Nachfolgend ein Auszug aus der API-Dokumentation von Java-Soft:
public static double sqrt(double a)
double
value.a
- a double
value.
a
.
If the argument is NaN or less than zero, the result is NaN.