Eine gute Antwort wäre:

Das fertige Programm steht unten.

Vollständiges Programm

Das vollständige Programm kann kopiert, in einen Editor eingefügt und auf die übliche Weise ausgeführt werden.

import java.io.*;

// Anwender wählt den Endwert für die Zeit, t
// Das Programm berechnet und gibt die Entfernung aus,
// die der Ziegelstein in der Zeit t zurückgelegt hat
//
class FallenderZiegelstein
{
  public static void main (String[] args ) throws IOException
  {
    final double G = 9.80665;  // Konstante für Gravitationsbeschleunigung
    int    t, zeit;            // Zeit in Sekunden und Endwert der Zeit
    double entfernung;         // die Entfernung, die der Ziegelstein
                               // zurückgelegt hat

    BufferedReader userIn = new BufferedReader (new InputStreamReader(System.in));
    String inputData;

    System.out.println( "Geben Sie den Grenzwert ein:" );
    inputData = userIn.readLine();
    zeit     = Integer.parseInt( inputData );

    // Übschrift ausgeben
    System.out.println( "Sekunden\tEntfernung"  );
    System.out.println( "-------\t--------"  );

    t         = 0 ;
    while (  t <= zeit )
    {
      entfernung = (G * t * t)/2 ;
      System.out.println( t + "\t" + entfernung );

      t = t + 1 ;
    }
  }
}

Sie könnten ebenfalls schreiben entfernung = 0.5 * G * t * t ; bzw.
entfernung = (1.0 / 2.0) * G * t * t ;.

Was waren die zwei Fallen beim Übersetzen der Formel? Wenn Sie sie mit (1/2) * G * t * t übersetzt hätten, wären Sie in die erste Falle gegangen. (1/2) fordert eine Ganzzahl-Division von 1 durch 2, Ergebnis 0.

Wenn Sie die Formel mit 1/2 * G * t * t, übersetzt hätten, wären Sie in die zweite Falle gegangen. Für den Compiler, sieht das aus wie die erste falsche Formel (da "/" die gleiche Präzedenz wie "*" hat).

Ein drittes Problem ist die Berechnung des Quadrats. Multiplizieren Sie t mit t.

FRAGE 15:

Jetzt angenommen Sie wollen eine Tabelle, um die Erhöhung der Zeit in 0.1 Sekundenschritten zu zeigen. Modifizieren Sie das Programm, so dass es das mit einem Maximum an Genauigkeit tut. Der Anwender wird immer noch den Endwert in Sekunden eingeben.

Inhaltsverzeichnis