Das fertige Programm steht unten.
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
.