1 h) Übungsaufgaben
Java-Programme
Von der Konsole aus
Aufgabe 1
Kompiliere die Dateien Baufirma_1.java und Baufirma_4.java von der Konsole aus. Wie viele Klassen erhältst du und warum?
Material: Quelltexte
Lösung Aufg 01
Nachdem du beide Programme kompiliert hast liegen
vier .class Dateien vor.
Das kommt daher, dass jedes der beiden Programme eine weitere Klasse benötigt.
Java merkt das und kompiliert diese direkt mit.
Kompilieren:
Öffne die Konsole. (Start → Ausführen, dann CMD eingeben)
Wechsel in den Ordner, in dem sich die Dateien befinden
Gib folgende Befehle zum Kompilieren ein:
javac Baufirma_1.java
javac Baufirma_4.java
Aufgabe 2
Führe folgende Programme von der Konsole aus: Baufirma_1 und Baufirma_4.
Material: Programme
Lösung Aufg 02
Du kopierst alle Dateien in einen Ordner.
Ausführen:
Öffne die Konsole. (Start → Ausführen, dann CMD eingeben)
Wechsel in den Ordner, in dem sich die .class Dateien befinden
Gib folgende Befehle zum Ausführen ein (!ohne Endung!):
java Baufirma_1
java Baufirma_4
Aufgabe 3
Thomas hat endlich das JDK von Sun installiert und will mit Java loslegen.
a)Er will sein erstes Programm uebung.java kompilieren. Auf der Konsole gibt er ein:
javac uebung.java
Er erhält die Meldung: Befehl oder Dateiname nicht gefunden
b) Nachdem er mit deiner Hilfe das Problem a) gelöst hat stellt er fest, dass bei ihm der Befehl java nur mit der Option -cp . funktioniert. Wie kann er Abhilfe schaffen?
Aufgabe 4
class JavaLernen{ }
a) Kann die Klasse kompiliert werden? Begründung
b) Kann die Klasse ausgeführt werden?
Interaktion
Argumente übergeben
Erstelle folgende Programme:
Aufgabe 1
Hallo
Du übergibst dem Programm einen Vor- und einen Nachnamen.
Das Programm begrüßt dich dann sehr nett.
Lösung Aufg 03
public class Hallo {
public static void main (String args[]) {
if(args.length>=2){ //wenn mindestens zwei Argumente beim Aufruf angegeben wurden
System.out.println("Wilkommen "+args[0]+" "+args[1]);
}
else{//ansonsten, d.h. bei weniger als zwei Argumenten
System.out.println("Du must einen Vor- und einen Nachnamen beim Programmaufruf angeben.");
}
}
}
Aufruf:
java Hallo Markus S.
Aufgabe 2
Addierer Du übergibst drei ganze Zahlen, die das Programm addiert.
Lösung Aufg 04
public class Addierer {
public static void main (String args[]) {
if(args.length>=3){ //wenn mindestens zwei Argumente beim Aufruf angegeben wurden
//das sieht zwar gut aus, funktioniert aber nicht, da alle Argumente als String behandelt werden.
System.out.println(args[0]+" + "+args[1]+" + "+args[2]+" = "+args[0]+args[1]+args[2]);
//die Argumente müssen in ganze Zahlen umgewandelt werden.
int zahl1 = Integer.parseInt(args[0]);
int zahl2 = Integer.parseInt(args[1]);
int zahl3 = Integer.parseInt(args[2]);
//zweiter Versuch
System.out.println(args[0]+" + "+args[1]+" + "+args[2]+" = "+zahl1+zahl2+zahl3);
/* das sieht wiederum gut aus, führt aber nicht zum gewünschten Erfolg.
* Das + Zeichen wird von links nach rechts ausgewertet.
* Links steht ein String => die Zahlen werden als String angesehen.
* */
//dritter Versuch
System.out.println(args[0]+" + "+args[1]+" + "+args[2]+" = "+(zahl1+zahl2+zahl3));
}
else{//ansonsten, d.h. bei weniger als zwei Argumenten
System.out.println("Du must drei ganze Zahlen beim Programmaufruf angeben.");
}
}
}
Aufruf:
java Addierer 3 -6 7
Eingabe über die Tastatur
Erstelle folgende Programme:
Aufgabe 3
Hallo2
Das Programm fragt nach deinem Vor- und Nachnamen.
Anschließend begrüßt es dich sehr nett.
Lösung Aufg 03
import java.util.Scanner;//wir importieren die Fähigkeit Tastatureingaben verarbeiten zu können
public class Hallo2 {
public static void main (String args[]) {
String vorname,nachname;//Deklaration von zwei Variablen (mit Komma getrennt)
Scanner wieviel; //Deklaration
wieviel = new Scanner(System.in); //Initialisierung
System.out.println("Gib deinen Vornamen ein:");//Ein Text wird ausgegeben
vorname= wieviel.next();//Einlesen des Vornamens
System.out.println("Gib deinen Nachnamen ein:");//Ein Text wird ausgegeben
nachname= wieviel.next();//Einlesen des Nachnamen
System.out.println("Herzlich wilkommen "+vorname+" "+nachname);//Die Begrüßung
}
}
Aufruf:
java Hallo2
Aufgabe 4
Addierer2 Das Programm fragt drei ganze Zahlen ab und addiert sie.
Lösung Aufg 04
import java.util.Scanner;//wir importieren die Fähigkeit Tastatureingaben verarbeiten zu können
public class Addierer2 {
public static void main (String args[]) {
int zahl1,zahl2,zahl3;//Deklaration dreier Variablen (mit Komma getrennt)
Scanner wieviel; //Deklaration
wieviel = new Scanner(System.in); //Initialisierung
System.out.println("Gib eine Zahl ein:");//Ein Text wird ausgegeben
zahl1= wieviel.nextInt();//Einlesen der ersten Zahl
System.out.println("Gib eine zweite Zahl ein:");//Ein Text wird ausgegeben
zahl2= wieviel.nextInt();//Einlesen der zweiten Zahl
System.out.println("Und noch eine dritte Zahl:");//Ein Text wird ausgegeben
zahl3= wieviel.nextInt();//Einlesen der dritten Zahl
System.out.println(zahl1+" + "+zahl2+" + "+zahl3+" = "+(zahl1+zahl2+zahl3));
}
}
Aufruf:
java Addierer2
Klassen-Objekte
Zuchtprogramm
Du bist erfolgreiche/r Biolog(e/in) und wagst dich an neuartige DNA Experimente heran:
Aufgabe 1
Erstelle einen Bauplan für eine neue Hunderasse Igsler mit folgenden Eigenschaften und Fähigkeiten:
HundeNamen
Verhalten
Belllaut
Gewicht (als Zahl)
belle
geheEinkaufen
Jede der Eigenschaften kannst du ändern und abfragen.
Hierzu nutzt du schon den neu gelernten getter und setter Ansatz.
Lösung Aufg 01
public class Igsler {
private String hundeNamen;
private String verhalten;
private String belllaut;
private int gewicht;
public String belle(){
return this.belllaut;
}
public void geheEinkaufen(){
System.out.println("der Hund geht nun einkaufen");
}
//setter Methoden zum Ändern der Eigenschaften
public void setHundenamen(String derName){
this.hundeNamen=derName;
}
public void setVerhalten(String welches){
this.verhalten=welches;
}
public void setBelllaut(String wie){
this.belllaut=wie;
}
public void setGewicht(int wieviel){
this.gewicht=wieviel;
}
//getter Methoden zum Abfragen der Eigenschaften
public String getHundenamen(){
return this.hundeNamen;
}
public String getVerhalten(){
return this.verhalten;
}
public String getBelllaut(){
return this.belllaut;
}
public int getGewicht(){
return this.gewicht;
}
}
**Aufruf:**\\
java Zuechter 20
Aufgabe 2
Züchte einen Hund. Nenne ihn Daisy.
Weise jedem deiner Hunde ein Gewicht und ein bestimmtes Verhalten zu
Die Zuweisung soll folgendermaßen erfolgen:
Verhalten, Namen und Belllaut als Tastatureingabe.
Gewicht als Argument
Lösung Aufg 02
import java.util.Scanner;//wir importieren die Fähigkeit Tastatureingaben verarbeiten zu können
public class Zuechter {
public static void main (String args[]) {
Igsler Daisy;
Daisy = new Igsler();
if(args.length>=1){ //wenn mindestens ein Argumente beim Aufruf angegeben wurden
//das Argumente muss in eine Zahl umgewandelt werden.
int gewicht = Integer.parseInt(args[0]);
Daisy.setGewicht(gewicht);
}
else{//ansonsten, d.h. bei weniger als zwei Argumenten
System.out.println("Du must das Gewicht beim Aufruf angeben.");
}
Scanner eingabe; //Deklaration
eingabe = new Scanner(System.in); //Initialisierung
System.out.println("Wie soll der Hund denn heissen?");//Ein Text wird ausgegeben
Daisy.setHundenamen(eingabe.next());//Der Hundename wird eingelesen
System.out.println("Welches Verhalten zeigt "+Daisy.getHundenamen());//Ein Text wird ausgegeben
Daisy.setVerhalten(eingabe.next());//Das Verhalten wird zugeordnet
System.out.println("Wie soll "+Daisy.getHundenamen()+" bellen?");//Ein Text wird ausgegeben
Daisy.setBelllaut(eingabe.next());//Der Belllaut wird zugeordnet
System.out.println("-----------------------------------------------");
System.out.println("Hier sind die Informationen zu deinem Hund:");
System.out.println("Name: "+Daisy.getHundenamen());
System.out.println("Verhalten: "+Daisy.getVerhalten());
System.out.println("Bellaut: "+Daisy.getBelllaut());
System.out.println("Gewicht: "+Daisy.getGewicht()+" kg");
}
}
Aufgabe 3
Ein Hund soll verkauft werden.
Zeige dem neuen Besitzer, wie er mit dem Hund umgehen kann.
So könnte ein Verkaufsgespräch aussehen:
Beispiel Aufg 03
import java.util.Scanner;//wir importieren die Fähigkeit Tastatureingaben verarbeiten zu können
public class Verkaeufer {
public static void main (String args[]) {
Igsler Daisy;
Daisy = new Igsler();
Scanner eingabe; //Deklaration
eingabe = new Scanner(System.in); //Initialisierung
System.out.println("Wie soll der Hund denn heissen?");//Ein Text wird ausgegeben
Daisy.setHundenamen(eingabe.next());//Der Hundename wird eingelesen
//Diesmal gibt es eine "Schnellzucht"
Daisy.setGewicht(20);//Der Hundename wird vergeben
Daisy.setVerhalten("lieb");//Das Verhalten wird zugeordnet
Daisy.setBelllaut("wau wau");//Der Belllaut wird zugeordnet
System.out.println("Hier ist ihr neuer Hund:");
System.out.println("Name: "+Daisy.getHundenamen());
System.out.println("Verhalten: "+Daisy.getVerhalten());
System.out.println("Bellaut: "+Daisy.getBelllaut());
System.out.println("Gewicht: "+Daisy.getGewicht()+" kg");
System.out.println("-----------------------------------------------");
System.out.println(Daisy.getHundenamen()+" kann viel. Z.B. bellen.");
System.out.println(Daisy.belle());
System.out.println("-----------------------------------------------");
System.out.println(Daisy.getHundenamen()+" kann auch anders bellen");
System.out.println("Wie soll "+Daisy.getHundenamen()+" bellen?");
Daisy.setBelllaut(eingabe.next());
System.out.println(Daisy.belle());
System.out.println("-----------------------------------------------");
System.out.println(Daisy.getHundenamen()+" folgt auf Kommando.");
System.out.println("momentan ist "+Daisy.getHundenamen()+" "+Daisy.getVerhalten());
System.out.println("Wie soll "+Daisy.getHundenamen()+" sich verhalten?");
Daisy.setVerhalten(eingabe.next());
System.out.println("Sehen Sie, nun ist "+Daisy.getHundenamen()+" "+Daisy.getVerhalten());
}
}
Ausblick für Version zwei deiner neuen Rasse:
Schon beim „Herstellen“ eines Vierbeiners soll dieser mit bestimmten Standard Eigenschaften automatisch belegt werden.
Es müsste noch sichergestellt werden, dass deine Exemplare auch bei unsachgemäßer Behandlung noch funktionieren.
Aufgabe 4
Schreibe eine Klasse zum Verwalten von Personen. Es soll den Vornamen, den Nachnamen und das Alter verwalten und die Angaben zu einer Person ausgeben können.
a) Wie könnte der Plan dieser Klasse aussehen?
b) Schreibe ein Programm, dass diese Klasse nutzt. Alle Angaben sollen über die Tastatur eingegeben werden können.
c) Gib zwei Datensätze ein und lass dir den ersten ausgeben.
5. Erstelle ein Programm Addition, das zwei ganze Zahlen addiert. Diese werden beim Programmaufruf übergeben.
Die Ausgabe soll wie folgt aussehen: Das Ergebnis der Addition 7+8 lautet: 15
Zugriffsmodifizierer
Aufgabe 1
Was versteht man in Java unter Kapselung. Gib ein Beispiel.
Aufgabe 2
Du hast folgende Klasse entwickelt und verkaufst sie an Kunden.
public class KoerperGewicht{
int gewicht=0;
public void welchesGewicht(){
System.out.println(this.gewicht+" kg");
}
}
Kunde A nutzt sie wie folgt und ist voll zufrieden.
public class Meier {
public static void main(String[] args) {
KoerperGewicht peter=new KoerperGewicht();
peter.gewicht=15;
peter.welchesGewicht();
}
}
Kunde B wiegt 80kg. Er beschwert sich bei dir, dass er zu schwer sei.
Seine Falscheingabe hat er nicht bemerkt.
public class Mueller {
public static void main(String[] args) {
KoerperGewicht hans=new KoerperGewicht();
hans.gewicht=800;
hans.welchesGewicht();
}
}
a) Wie kannst du verhindern, dass direkt auf die Variablen zugegriffen wird?
b) Ändere dein Programm so ab, dass Kund B auf seine mögliche Falscheingabe hingewiesen wird.
Pakete
Aufgabe1
Die erste Zeile einer Java Klasse lautet:
package welpen;
Aufgabe 2
package welpen;
class Hund {
public Hund(){
System.out.println("Soeben wurde ein Hund gezuechtet");
}
}
class Zuechter {
public static void main (String[] args){
Hund fiffi = new Hund();
}
}
Beide Dateien befinden sich im Unterordner welpen.
Finde und korrigiere den Fehler.
Variablen
Aufgabe1
Erkläre die Begriffe Instanzvariable und Klassenvariable
Aufgabe2
public class Uebung{
static int zaehler1=0;
int zaehler2=0;
public Uebung(){
zaehler1++;
zaehler2++;
System.out.println("zaehler1: "+this.zaehler1+"; zaehler2: "+this.zaehler2);
}
}
public class Firma{
public static void main(String[] args) {
Uebung eins =new Uebung();
Uebung zwei =new Uebung();
Uebung drei =new Uebung();
Uebung vier =new Uebung();
}
}
Wie sieht die Ausgabe aus und warum?
Konstruktoren
Aufgabe 1
Schreibe ein Klasse mit folgender Funktionalität:
sie baut Quadrate mit der Seitenlänge 10cm.
Jedes mal, wenn ein Quadrat erstellt wird, erfolgt automatisch die Ausgabe: Quadrat erstellt
Aufgabe 2
Eine Klasse foo.class besitzt die Klassenvariable zaehler und die Klassenmethode ausgabe. Wie erreichst du, dass der Zähler beim Erstelle einer Instanz um eins hochgezählt und die Klassenmethode ausgabe ausgeführt wird?
Sonstiges
Folgender Code habe ich im www gefunden:
public class zahlensysteme {
public static void main (String args[]) {
long zahl=44;
System.out.println("Zehner: "+zahl);
System.out.println("Binär: "+Long.toBinaryString(zahl));
System.out.println("Octal: "+Long.toOctalString(zahl));
System.out.println("Hexadezimal: "+Long.toHexString(zahl));
System.out.println("rückwärts");
System.out.println(Long.valueOf("101100",2)); //Binär
System.out.println(Long.valueOf("54",8)); //Oktal
System.out.println(Long.valueOf("2C",16)); //HEX
}
}
Hier einige Aufgaben dazu:
Nutze die API (http://java.sun.com/javase/6/docs/api/index.html) dazu, um herauszufinden, ob und wie du long durch int ersetzen kannst.
Erstelle sechs Umrechenprogramm mit folgenden Fähigkeiten:
Hex → Dez
Oct → Dez
Bin → Dez
und umgekehrt
Wie du siehst ist das alles sehr aufwendig.
Als Sternchenaufgabe könntest du eine Applikation entwickeln,
die alle sechs Fälle abdeckt.
Z.B.
Von welchem Zahlensystem soll ich umrechnen?
Gib die Zahl ein:
In welches Zahlensystem soll ich umrechnen?
Das Ergebnis lautet:
Hier mein Vorschlag:
umrechner.class Fehleingaben werden nicht abgefangen.
Beachte, dass du die Datei umbenennen musst. Der Anfangsbuchstabe muss groß geschrieben werden.
Dokuwiki lässt keine Großbuchstaben zu.
Startseite > Programmieren > Java > Grundlagen > Übungsaufgaben