2.5 Lösungen
2.5 Lösungen2.5.1 Zuweisungen und Typen
class ArithmeticTest { public static void main (String args[]) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println("x is " + x + ", y is " + y); System.out.println("x + y = " + (x + y)); System.out.println("x - y = " + (x - y)); /* ??? */ System.out.println("x % y = " + (x % y)); System.out.println("a is " + a + ", b is " + b); /* ??? */ } }
2.5.2 Erlaubte Variablennamen
siehe Spezifikation Java 7 (Identifier)
Lösung durch Testen mit javac
public class VariableNames { int maxvalue; int maxValue; int max_value; //int max value; int end; int End; //int 10%ofSum; int sum10; int _10PercentOfSum; public static void main(String[] args) { } }
Erklärung
- maxvalue: korrekter Name
- maxValue: korrekter Name
- max_value: korrekter Name
- max value: Leerstelle im Namen ist nicht erlaubt
- end: korrekter Name
- End: korrekter Name
- 10%ofSum: Ziffer als erstes Zeichen ist nicht erlaubt
- sum10: korrekter Name
- _10PercentOfSum: korrekter Name
2.5.3 Literale
Das Programm übersetzt nicht weil
- der Wert 4000000000 ein "Integer"-Literal ist
- der Wert 4000000000 den Wertebereich einer Ganzzahl vom Typ "Integer" übersteigt
- Die Zuweisung auf eine Variable vom Typ "Long" spielt zu diesem Zeitpunkt noch keine Rolle
2.5.4 Ausdrücke
public class Expressions { public static void main(String[] args) { long a = 3; int b = 4; short c = 5; byte d = 6; int result1; long result2; result2 = d / b * a; System.out.println("d / b * a = " + result2 ); result1 = c + b * (d + 1); System.out.println("c + b * (d + 1) = " + result1 ); result1 = d / (c - 1) * b / 2; System.out.println("d / (c - 1) * b / 2 = " + result1 ); result1 = d % b; System.out.println("d % b = " + result1 ); result1 = -c % b; System.out.println("-c % b = " + result1 ); } }
Ergebnis
d / b * a = 3 c + b * (d + 1) = 33 d / (c - 1) * b / 2 = 2 d % b = 2 -c % b = -1
2.5.5 Zuweisungen
public class AllowedAssigments { public static void main(String[] args) { long a = 3; int b = 4; short c = 5; byte d = 6; a = b + 3 * (d + 1); b = c * c; c = (byte)(b / 3); d = (byte)(((byte)a + b)); d = (byte) ( a + b); } }
2.5.6 Ausdrücke
public class Runden { public static void main(String[] args) { int a, result; a =149; result = (a +50)/100*100; System.out.println("Eingabe = " + a + " Ergebnis = " + result); a =150; result = (a +50)/100*100; System.out.println("Eingabe = " + a + " Ergebnis = " + result); } }
Ergebnis
Eingabe = 149 Ergebnis = 100 Eingabe = 150 Ergebnis = 200
2.5.7 Zeitrechnung
public class timeCalculation { public static void main(String[] args) { int a,h,m,s; a = 0; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); a = 59; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); a = 60; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); a = 100; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); a = 3600; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); a = 4000; h = a/3600; m = (a-h*3600)/60; s = a - h*3600 - m*60; System.out.println("Sekunden = " + a + " = " + h + ":" + m + ":" +s); } }
Ergebnis
Sekunden = 0 = 0:0:0 Sekunden = 59 = 0:0:59 Sekunden = 60 = 0:1:0 Sekunden = 100 = 0:1:40 Sekunden = 3600 = 1:0:0 Sekunden = 4000 = 1:6:40
2.5.8 Polynomberechnung
public class Polynom { public static void main(String[] args) { double a, b, c, d, x, y; a = 1.2; b = -2.3; c = 4.5; d = -6.7; x = 8.9; y = a*x*x*x+b*x*x+c*x+d; System.out.print("Ergebnis = "+ y); System.out.println("\n oder..."); y = a*Math.pow(x,3)+b*Math.pow(x,2)+c*x+d; System.out.print("Ergebnis = "+ y); } }
Ergebnis
Ergebnis = 697.1298 oder... Ergebnis = 697.1297999999999
2.5.9 Abstand zwischen Punkten
public class Main { public static void main(String[] args) { double x1,x2, y1, y2, x, y, d; x1 = 1; y1 = 1; x2 = 4; y2 = 5; x = x1-x2; y = y1-y2; d = Math.sqrt(x*x+y*y); System.out.println("distance = " + d); } }
Ergebnis
distance = 5.0
2.5.10 Berechnung von ∏ (Pi)
Hilfe; Java Spezifikation: Division
public class PiCalculation { public static void main(String[] args) { double pi; pi = (1.0 - 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0 + 1.0/13.0)*4; System.out.println("Pi = "+ pi); System.out.println("\n oder ..."); pi=1; for (int i=1;i<=10000;i++) { pi = pi + Math.pow(-1,i)/(2*i+1); } pi=pi*4; System.out.println("Pi = "+ pi); }
Ergebnis
Pi = 3.2837384837384844 oder ... Pi = 3.1416926435905346
2.5.11 Analoge Uhr
import static java.lang.Math.*; /** * * @author stsch */ public class Zeiger { public static final int maxRadius = 100; // Beeinflusst GUI-Größe ! /** * @param s Sekunden der aktuellen Zeit. Ein Wert zwischen 0 und 59 * @return aktuelle X Koordinate der Zeigerspitze des Sekundenzeigers * auf dem Bildschirm */ public static int sekundeX(int s) { int xs; /* Implementierung Beginn */ double sx = sin(s*2*PI/60)*maxRadius; xs = (int)sx; /* Implementierung Ende */ return xs; } /** * @param s Sekunden der aktuellen Zeit. Ein Wert zwischen 0 und 59 * @return aktuelle Y Koordinate der Zeigerspitze des Sekundenzeigers * auf dem Bildschirm */ public static int sekundeY(int s) { int ys; /* Implementierung Beginn */ double sy = -cos(s*2*PI/60)*maxRadius; ys = (int)sy; /* Implementierung Ende */ return ys; } /** * @param m Minuten der aktuellen Zeit. Ein Wert zwischen 0 und 59 * @return aktuelle X Koordinate der Zeigerspitze des Minutenzeigers * auf dem Bildschirm */ public static int minuteX(int m) { int xm; /* Implementierung Beginn */ double mx = sin(m*2*PI/60)*maxRadius*0.75; xm = (int)mx; /* Implementierung Ende */ return xm; } /** * @param m Minuten der aktuellen Zeit. Ein Wert zwischen 0 und 59 * @return aktuelle Y Koordinate der Zeigerspitze des Minutenzeigers * auf dem Bildschirm */ public static int minuteY(int m) { int ym; /* Implementierung Beginn */ double my = -cos(m*2*PI/60)*maxRadius*0.75; ym = (int) my; /* Implementierung Ende */ return ym; } /** * @param h Stunden der aktuellen Zeit. Ein Wert zwischen 0 und 12 * @return aktuelle X Koordinate der Zeigerspitze des Stundenzeigers * auf dem Bildschirm */ public static int stundeX(int h) { int xh; /* Implementierung Beginn */ double hx = sin(h*2*PI/12)*maxRadius*0.5; xh = (int)hx; /* Implementierung Ende */ return xh; } /** * @param h Stunden der aktuellen Zeit. Ein Wert zwischen 0 und 12 * @return aktuelle Y Koordinate der Zeigerspitze des Stundenzeigers * auf dem Bildschirm */ public static int stundeY(int h) { int yh; /* Implementierung Beginn */ double hy = -cos(h*2*PI/12)*maxRadius*0.5; yh = (int)hy; /* Implementierung Ende */ return yh; } }
2.5.13 Airlines
Klasse Flughafen
package Airline.Block2;/**
*
* @author stsch
*/
public class Flughafen {
String name;
Flugzeug gate1;
Flugzeug gate2;
Flugzeug gate3;
Flugzeug gate4;
Flugzeug gate5;
Flugzeug gate6;
double treibstoffLager;
public static void main(String[] args) {
Flughafen pad = new Flughafen();
pad.name = "Paderborn";
pad.treibstoffLager = 1000000;
// Boeing 747, https://de.wikipedia.org/wiki/Boeing_747#747-400
Flugzeug lh1 = new Flugzeug();
lh1.kennzeichen ="D-ABTL";
pad.gate1 = lh1;
System.out.println("*** Unser Flughafen ***");
System.out.println("Flughafen " + pad.name);
System.out.println("Am Gate 1: " + pad.gate1);
System.out.println("Am Gate 2: " + pad.gate2);
System.out.println("Am Gate 3: " + pad.gate3);
System.out.println("Treibstoff: " + pad.treibstoffLager);
System.out.println("***********************");
pad.gate1=null;
pad.gate2=lh1;
System.out.println("*** Unser Flughafen ***");
System.out.println("Flughafen " + pad.name);
System.out.println("Am Gate 1: " + pad.gate1);
System.out.println("Am Gate 2: " + pad.gate2);
System.out.println("Am Gate 3: " + pad.gate3);
System.out.println("Treibstoff: " + pad.treibstoffLager);
System.out.println("***********************");
lh1.leergewicht = 184567;
lh1.maxGewicht = 412770;
lh1.passagiere = 200;
lh1.besatzung = 10;
lh1.drucken();
}
}
Klasse Flugzeug
package Airline.Block2;/*
*
* @author stsch
*/
public class Flugzeug {
String kennzeichen;
static final int durchschnittsGewicht= 75;
static final double kerosinGweicht= 0.796; // kg/dm3
public int passagiere;
public int besatzung;
public double treibstoff;
public double leergewicht;
public double maxGewicht;
/**
*
* @return aktuelles Gewicht;
*/
public double gewicht() {
// Berechnen Sie das aktuelle Gewicht:
// 1. Anlegen einer Variablen
// 2. Berechnen des Gewichts
// 3. Variable in return zurückgeben
double meinGewicht = leergewicht + passagiere*durchschnittsgewicht+
besatzung*durchschnittsgewicht+treibstoff*gewichtKerosin;
return meinGewicht;
}
public String toString() {return kennzeichen;}
public void drucken() {
System.out.println("Objekt: " + this);
System.out.println("kennzeichen: " + kennzeichen);
System.out.println("passagiere: " + passagiere);
System.out.println("Besatzung: " + besatzung);
System.out.println("Treibstoff: " + treibstoff);
System.out.println("Leergewicht: " + leergewicht);
System.out.println("maxGewicht: " + maxGewicht);
System.out.println("aktuelles Gewicht: " + gewicht());
}
}
- 10469 views