PI4 Logo

Übung Praktische Informatik I (Hinweise zu Blatt 3)

1. Kommandozeilenparameter einlesen

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

Zusatzinformationen

Hier noch ein Auszug aus der API-Dokumentation von Java-Soft:

parseInt

public static int parseInt(String   s)
                    throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002d') to indicate a negative value.
Parameters:
s - a string.
Returns:
the integer represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.


parseDouble

public static double parseDouble(String  s)
                          throws NumberFormatException
Returns a new double initialized to the value represented by the specified String, as performed by the valueOf method of class Double.
Parameters:
s - the string to be parsed.
Returns:
the double value represented by the string argument.
Throws:
NumberFormatException - if the string does not contain a parsable double.
Since:
JDK1.2
See Also:
valueOf(String)


valueOf

public static Double valueOf(String  s)
                      throws NumberFormatException
Returns a new 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:


      FloatValue:
 
      Signopt FloatingPointLiteral
      
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 a 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.
Parameters:
s - the string to be parsed.
Returns:
a newly constructed Double initialized to the value represented by the string argument.
Throws:
NumberFormatException - if the string does not contain a parsable number.

2. Berechnung der Quadratwurzel in Java

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:

sqrt

public static double sqrt(double a)
Returns the square root of a double value.
Parameters:
a - a double value.
Returns:
the square root of a. If the argument is NaN or less than zero, the result is NaN.


Christoph Kuhmünch <cjk@pi4.informatik.uni-mannheim.de>
Last modified: Fri Nov 12 09:01:11 MET 1999