Javafragen

Javafragen

Javafragen zum Lernen und Überprüfen grundlegender Javakenntnisse.

Die Fragen sind in den folgenden Niveaus geordnet:

Niveau
Stufe Beschreibung Kursniveau
1 Anfänger 1. Semester
2 Fortgeschrittener 2. Semester
3 Guru  

Die Fragen sind mit Schwierigkeitsgraden versehen

Schwierigkeitsgrad
Grad Beziehung zum Kurs
leicht leichter als in der Klausur gefordert
mittel Klausurniveau
schwer Jenseits der in der Klausur geforderten Kenntnisse

Die Antworten werden immer gleichzeitig mit einer neuen Frage veröffentlicht.

 

javafrage Fri, 12/23/2011 - 12:02

1. Fragen für Javaeinsteiger

1. Fragen für Javaeinsteiger

(Lizenz)

Kompetenzziele

Javafragen für Einsteiger. Die Fragen in dieser Kategorie sind auf das Skript: "Grundlagen der Programmierung in Java" für das erste Semester abgestimmt.

javafrage Mon, 01/16/2012 - 12:16

Fragen zur Einführung

Fragen zur Einführung Stefan Schneider Sat, 07/14/2018 - 19:34

1. Starten einer Anwendung:

1. Starten einer Anwendung:

Was gibt das folgende Javaprogramm auf der Konsole aus wenn man es mit dem Befehl

java Maintest F

startet. Woran erkennt man die Hauptmethode zum Starten der Anwendung?

public class MainTest {
    public MainTest(int k) {
       System.out.println("A");
    }    

public void Main() {
System.out.println("B");
}

public static void main(String[] eingabe) {
System.out.println("C");
}

public final void main(String args) {
System.out.println("D");
}

public String Main(String args) {
System.out.println("E");
String e = "E";
return e;
}
}

Hinweis: Diese Frage kann man erst beantworten wenn man den Stoff des gesamten Grundkurs beherrscht.

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten
javafrage Fri, 12/23/2011 - 12:23

2. Java-Befehle: Welche drei Dateiextensionen (Dateitypen) werden beim Übersetzen, Packen, Bündeln und Ausführen benutzt?

2. Java-Befehle: Welche drei Dateiextensionen (Dateitypen) werden beim Übersetzen, Packen, Bündeln und Ausführen benutzt?

Welcher der Dateitypen im Javaumfeld ist dafür gedacht in Texteditoren erstellt zu werden?

  • *.java
  • *.class
  • *.jar

Erklärung: Dateiextensionen sind die Endungen von Dateien die den Typ einer Datei bestimmen; Beispiele ausserhalb des Javaumfelds sind: .txt .exe .doc

Die Antwort finden Sie bei der nächsten Frage (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu 1. Starten eines Hauptprogramms

Die Frage finden Sie auf der vorgehenden Seite (URL links unten klicken)

Gibt "C" auf der Konsole aus.

Wenn eine Klasse mit dem Befehl java als Hauptpgrogramm gestartet wird, sucht das Laufzeitsystem eine Methode für die das folgende gilt

  • sie muss statisch sein: Es gibt zu diesem Zeitpunkt noch keine Anwendungsobjekte
  • void als Rückgabewert
  • Name "main". Java ist sensitive für Groß- und Kleinschreibung!
  • Eingabeparameter: Ein Feld von String. Der Name der Variable ist beliebig.
javafrage Fri, 12/23/2011 - 14:09

3. jar: Wozu dient das Hilfprogramm jar im Java SDK?

3. jar: Wozu dient das Hilfprogramm jar im Java SDK?

Die Antwort finden Sie bei der nächsten Frage (URL rechts unten).

Niveau 1
Schwierigkeitsgrad leicht
Zeit 2 Minuten

Antwort zu 2. Welche drei Dateiextensionen (Dateitypen) werden beim Übersetzen, Packen, Bündeln und Ausführen von Java-Anwendungen verwendet?

Die Frage finden Sie auf der vorgehenden Seite (URL links unten klicken)

Nur die *.java Dateien sind in Text (UTF8) codierte Dateien die man mit einem normalen Texteditor lesen kann. 

*.class und *.jar Dateien sind Binärdateien. *.jar Dateien sind im zip Format codiert.

 

javafrage Fri, 12/23/2011 - 16:26

4. Anwendungen des Java Development Kits

4. Anwendungen des Java Development Kits

Das Java Development Kit enthält Programme zum Übersetzen, Ausführen von Programmen, packen von Dateien, extrahieren von Dokumentation, generieren von Schnittstelleninformation.
Tragen Sie in die 5 pfeilartigen Fünfecke die entsprechenden Programmnamen ein:

JDK Tools ohne Namen

Niveau 1
Schwierigkeitsgrad mittel
Zeit

6 Minuten

Antwort zu 3. jar: Wozu dient das Hilfprogramm jar im Java SDK?

Zum Packen, Entdecken, Bündeln, komprimieren und signieren von Java Bytecode-dateien und beliebigen anderen Dateien zu einer Datei.

javafrage Sun, 01/08/2012 - 21:25

5. Anforderungen an einen Algorithmus

5. Anforderungen an einen Algorithmus

Nennen Sie vier Anforderungen an einen gültigen Algorithmus.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4. : Anwendungen des Java Development Kits

JDK Tools ohne Namen

javafrage Thu, 11/21/2013 - 16:09

6. Algorithmen erkennen I

6. Algorithmen erkennen I

Warum implementiert die folgende Methode keinen Algorithmus?

Geben Sie eine Erklärung.

public void keinAlgorithmus()
 {
 int a = 17;
 int b = 22;
 while (a!=b)
   {
      a++;
      b++;
   }
 }

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Anforderungen an einen Algorithmus

  1. Er funktioniert für gültige Eingaben
  2. Er besitzt endlich viele Einzelschritte
  3. Er ist in realistischer Zeit ausführbar
  4. Er terminiert

 

javafrage Sat, 11/28/2015 - 20:07

7. Eigenschaften eines gültigen Algorithmus

7. Eigenschaften eines gültigen Algorithmus

Analysieren Sie die folgende Methode. Der Algorithmus implementiert das Multiplizieren zweier Zahlen durch fortgesetztes Addieren. Ignorieren Sie potentielle Probleme mit endlichen Wertebereichen in der Java-arithmetik:

 public static int multipliziere(int a, int b) {
   int i = 0; // Laufvariable
   int result = 0; // Ergebnis
   while (i<b) { //Mache weiter bis Laufvariable b erreicht
      result = result+a; // addiere a zu Ergebnis
      i++; // Inkrementiere die Laufvariable
    }
   return result;
 }

Die folgende Aussage ist zu vage formuliert um der Methode die Eigenschaften eines gültigen Algorithmus zu zugestehen.

„Diese Methode multipliziert zwei beliebige ganze Zahlen a und b und gibt das Ergebnis zurück“

Welche Eigenschaft eines Algorithmus ist nicht erfüllt?

Wie muss die Aussage präzisiert werden, damit Sie einen gültigen Algorithmus beschreibt?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Algorithmen erkennen

Die Schleife terminiert nicht. Mehr Informationen zu diesem Thema finden Sie hier.

javafrage Sun, 05/01/2016 - 14:39

Anonymous (not verified)

Thu, 05/26/2016 - 10:01

Hallo Herr Schneider,

wollten Sie wirklich den binary left shift operator benutzen?

Nach meinem Wissensstand würde Ihre Schleife dann nicht terminieren. ( Die Bits von i um b Stellen nach links verschoben ist immer größer Null, also -> True. )

Und eine Anfrage bezüglich der Lesbarkeit des Codes: Ist es möglich die Kommentare alle bündig weiter rechts auszurichten? ( Betrifft vlt allen Code von Ihnen, doch hier fällt es mir besonders auf. )

Viele Grüße!

holodoctor

Sun, 05/29/2016 - 16:48

In reply to by Anonymous (not verified)

Gut beobachtet. Danke.
Ich habe den Fehler korrigiert.

8. Programme des JDK/SDK

8. Programme des JDK/SDK

Das Java Development Kit (JDK) enthält Programme zur Softwareentwicklung und Ausführung von Javaanwendungen. Nennen Sie die typischen Eingaben und Ausgaben dieser Programme :

JDK Programm Gelesene Dateien (Eingaben) Ausgaben
javac    
javap    
javadoc    
jar    
java    

.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7: Eigenschaften eines gültigen Algorithmus

Die folgende Aussage ist zu vage formuliert um der Methode die Eigenschaften eines gültigen Algorithmus zu zugestehen.

„Diese Methode multipliziert zwei beliebige ganze Zahlen a und b und gibt das Ergebnis zurück“

Welche Eigenschaft eines Algorithmus ist nicht erfüllt (2 Min.)?
Negative Werte für b sind gültige Eingabewerte für die aber inkorrekte Ergebnisse produziert werden.
Wie muss die Aussage präzisiert werden, damit Sie einen gültigen Algorithmus beschreibt (2 Min.)?

„Diese Methode multipliziert eine beliebige ganze Zahl a mit einer positiven Zahl b und gibt das Ergebnis zurück“ 

Antwort zu Frage 8.: Programme des JDK/SDK

JDK Programm Gelesene Dateien (Eingaben) Ausgaben
javac  Java Quellcode, Java class, Jar dateien  *.class Dateien mit Byte code
javap  Java class Dateien  *.java Dateien mit Deklarationen
javadoc  Javaquellcode  html Seiten mit Dokumentation
jar  Beliebige Dateien, vorzugsweise Java Bytecodedateien  Den Inhalt der jar Datei oder jar Dateien. Dies hängt von den Optionen ab
java  Java Bytecode-dateien,
Java Archive
 Alle Möglichkeiten eines Programms:
Ausgaben auf Konsole, GUI, Netzwerk oder Dateien.

 

javafrage Sun, 06/19/2016 - 11:06

Anonymous (not verified)

Tue, 12/18/2018 - 22:29

Ich verstehe leider nicht warum bei den Programmen des JDK/SDK der Javac also der Übersetzer auch Java class und jar Dateien einlesen kann, ich dachte dieser Übersetzt den Quellcode in Bytecode und gibt dann die .class Dateien aus?

java braucht oft die Informationen anderer Klassen (Methoden, Attribute etc.) um eine Klasse übersetzen zu können. Hierfür benutzt er die .class Datei einer Klasse oder ein .jar Archiv in dem die .class Datei steht. Findet er keine .class Datei, übersetzt der die .java Datei.

9. Algorithmen erkennen II

9. Algorithmen erkennen II

Warum implementiert die folgende Methode keinen Algorithmus. Geben Sie eine Erklärung.

public void keinAlgorithmus() {
   int a = 1;
   while (a!= 100) {
      a++;
      a++;
   }
}

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8.: Programme des JDK/SDK

JDK Programm Gelesene Dateien (Eingaben) Ausgaben
javac  Java Quellcode, Java class, Jar dateien  *.class Dateien mit Byte code
javap  Java class Dateien  *.java Dateien mit Deklarationen
javadoc  Javaquellcode  html Seiten mit Dokumentation
jar  Beliebige Dateien, vorzugsweise Java Bytecodedateien  Den Inhalt der jar Datei oder jar Dateien. Dies hängt von den Optionen ab
java  Java Bytecode-dateien,
Java Archive
 Alle Möglichkeiten eines Programms:
Ausgaben auf Konsole, GUI, Netzwerk oder Dateien.

Antwort zu Frage 9.: Erkennen Algorithmen II

Die Schleife terminiert nicht.

holodoctor Sat, 05/08/2021 - 10:58

Fragen zu Typen, Operationen und Zuweisungen

Fragen zu Typen, Operationen und Zuweisungen javafrage Thu, 09/06/2018 - 18:09

1. Zuweisungen mit dem Datentyp char

1. Zuweisungen mit dem Datentyp char

Welche der Zuweisungen der Typen short und char werden nicht vom Übersetzer akzeptiert?

public class CharTest {
public static void main(String[] args) {
short s1 = 70;
short s2 = 0;;
char c = 'a';
System.out.println(c);
c++;
System.out.println(c);
c = s1;
System.out.println(c);
c = (char)s1;
System.out.println(c);
c = (char)(c + s1);
System.out.println(c);
s2= c;
System.out.println(s2);
s2= (short)c;
System.out.println(s2);
}
}
Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Thu, 12/29/2011 - 12:04

2. Syntax von Zuweisungen

2. Syntax von Zuweisungen

Welche der folgenden 10 Zuweisungen haben eine korrekte (richtige) bzw. inkorrekte (falsche) Syntax?
Was stimmt an den inkorrekten Zuweisungen nicht?

Nr. Zuweisung Bewertung (richtig, falsch) Erklärung (nur bei falscher Zuweisung)
 
int a;
int b;
int c;
richtig Die Variablen sind alle im gleichen Block deklariert und mit dem Wert 0 initialisiert.
1
a = 4;
   
2
a = b;
   
3
b := a;
   
4
19 = b;
   
5
a = a+c;
   
6
a = 2*c
   
7
a = a*a;
   
8
a = 4;
   
9
a,c = b;
   
10
c = c;
   
Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu 1.: Zuweisungen mit dem Datentyp char

char und short sind Datenbehälter der gleichen Größe (16 Bit). Auf beiden sind die arithmetischen Operationen definiert. Man darf sie aber aus Sicherheitsgründen nicht ohne Cast (Typkonversion) aufeinander zuweisen.

public class CharTest {
public static void main(String[] args) {
short s1 = 70;
short s2 = 0;
char c = 'a';
System.out.println(c);
c++;
System.out.println(c);
//c = s1;
System.out.println(c);
c = (char)s1;
System.out.println(c);
c = (char)(c + s1);
System.out.println(c);
//s2= c;
System.out.println(s2);
s2= (short)c;
System.out.println(s2);
}
}

 

javafrage Fri, 09/28/2012 - 15:57

3. Syntax von Bezeichnern

3. Syntax von Bezeichnern

Mit welchen Zeichen dürfen in Java Namen (Identifier) von Variablen beginnen?

Achten Sie auf Groß- und Kleinschreibung!

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2.: Syntax von Zuweisungen

Nr. Zuweisung Bewertung (richtig, falsch) Erklärung (nur bei falscher Zuweisung)
 
int a;
int b;
int c;
richtig Die Variablen sind alle im gleichen Block deklariert und mit dem Wert 0 initialisiert.
1
a = 4;
richtig  
2
a = b;
richtig   
3
b := a;
falsch  Der Zuweisungsoperator in Java ist „=“ 
4
19 = b;
 falsch   Man kann einem konstanten Literal keinen Wert zuweisen. 
5
a = a+c;
richtig   
6
a = 2*c
falsch   Semikolon fehlt 
7
a = a*a;
richtig   
8
a = 4;
richtig   
9
a,c = b;
falsch  Man kann nur einer Variablen einen Wert zuweisen 
10
c = c;
richtig   
javafrage Thu, 10/04/2012 - 22:58

4. Nicht erlaubte Namen von Bezeichnern

4. Nicht erlaubte Namen von Bezeichnern

Nennen Sie 10 Namen (Identifier) die Sie nicht in Java verwenden dürfen, obwohl Sie von der Zeichenfolge her, gültig aufgebaute Namen sind.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3.: Syntax von Bezeichnern

„_“, „$“ oder Buchstaben

javafrage Sun, 10/07/2012 - 19:00

5 Vererbung, Konstruktoren, Schlüsselworte

5 Vererbung, Konstruktoren, Schlüsselworte

Gegeben seien die beiden Klassen Unterklasse und Oberklasse:

public class Oberklasse {
   public int wert;
   public Oberklasse(int a) {
      wert=a;
      System.out.println("K-Oberklasse: "+ wert);
      a++;
   } // Ende Konstruktor Oberklasse ** Hier fehlte ein CR
   
   public static void main(String[] args) {
      Oberklasse ok = new Oberklasse(10);
      ok.wert++;
      System.out.println(ok.wert);
   } // Ende main
} // Ende Klasse Oberklasse

public class Unterklasse extends Oberklasse {
   public Unterklasse (int e, int f) {
      super(e+f);
      System.out.println("K-Unterklasse: "+ wert);
      wert = wert + e +f;
      System.out.println("K-Unterklasse: "+ wert);
   } // Ende Konstruktor Unterklasse

   public static void main(String[] args) {
      System.out.println("ok");
      Oberklasse ok = new Oberklasse(10);
      ok.wert++;
      System.out.println(ok.wert);
      System.out.println("uk");
      Unterklasse uk = new Unterklasse(2,3);
      ok.wert--;
      System.out.println(ok.wert);
   } // Ende main
} // Ende Klasse Unterklasse

a.) Schreiben Sie die Konsolenausgaben auf, die das Programm schreibt wenn es mit dem Befehl java Unterklasse gestartet wird.

b.) Unterlinieren Sie alle Schlüsselworte der Sprache Java

Niveau 1
Schwierigkeitsgrad mittel
Zeit 8+3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4.: Nicht erlaubte Namen von Bezeichnern

Schlüsselwörter und die Literale true, false, null können nicht für Bezeichnernamen verwendet werden. Alle Antworten mit 10 Beispielen von Schlüsselwörtern sind korrekt.

Diagramm mit Schlüsselwörtern der Sprache Java

javafrage Thu, 10/25/2012 - 17:38

Anonymous (not verified)

Tue, 11/09/2021 - 18:28

Macht es Sinn, diese Frage in Kapitel 2 zu packen, wenn hier noch nicht klar ist, was Vererbung überhaupt ist?

6. Deklaration und Zuweisung von Variablen

6. Deklaration und Zuweisung von Variablen

Deklarieren Sie eine Variable mit dem Namen x mit einem Typ der die Verwaltung von ganzen Zahlen mit 32 Bit erlaubt. Achten Sie auf die korrekte Syntax.

  1. Deklarieren Sie die Variable in einem Befehl und weisen Sie der Variablen den Wert 17 in einem zweiten Befehl zu.
  2. Deklarieren Sie die Variable und weisen Ihr den Wert 17 in einem integrierten Befehl zu.
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5.: Vererbung, Konstruktoren, Schlüsselwörter

public class Oberklasse {
   public int wert;
   public Oberklasse(int a) {
      wert=a;
      System.out.println("K-Oberklasse: "+ wert);
      a++;
   } // Ende Konstruktor Oberklasse ** Hier fehlte ein CR
   
   public static void main(String[] args) {
      Oberklasse ok = new Oberklasse(10);
      ok.wert++;
      System.out.println(ok.wert);
   } // Ende main
} // Ende Klasse Oberklasse

public class Unterklasse extends Oberklasse {
   public Unterklasse (int e, int f) {
      super(e+f);
      System.out.println("K-Unterklasse: "+ wert);
      wert = wert + e +f;
      System.out.println("K-Unterklasse: "+ wert);
   } // Ende Konstruktor Unterklasse

   public static void main(String[] args) {
      System.out.println("ok");
      Oberklasse ok = new Oberklasse(10);
      ok.wert++;
      System.out.println(ok.wert);
      System.out.println("uk");
      Unterklasse uk = new Unterklasse(2,3);
      ok.wert--;
      System.out.println(ok.wert);
   } // Ende main
} // Ende Klasse Unterklasse

a.) Die Konsolenausgaben

ok
K-Oberklasse: 10
11
uk
K-Oberklasse: 5
K-Unterklasse: 5
K-Unterklasse: 10
10

b.) Unterlinieren Sie alle Schlüsselworte der Sprache Java: siehe oben

 

javafrage Fri, 07/05/2013 - 09:01

7. Beispiele impliziter und expliziter Typkonvertierungen

7. Beispiele impliziter und expliziter Typkonvertierungen

Geben Sie jeweils ein Beispiel für implizite und notwendige explizite Typkonvertierungen (Casts) bei einer Zuweisung. Nutzen Sie die vorgegebenen Variablen, weisen Sie sie aufeinander zu:

int ii = -1000000;
long ll = -100L;
double db = 3.13;
  1. Beispiel einer Zuweisung mit einer impliziten Typkonvertierung
  2. Beispiel einer Zuweisung mit einer notwendigen, expliziten Typkonvertierung
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6.: Deklaration und Zuweisung von Variablen

  1. int x; x = 17;
  2. int x = 17;

 

javafrage Fri, 07/05/2013 - 09:17

8. Unterschiede zwischen char und short Typen

8. Unterschiede zwischen char und short Typen

 

char und short sind Datenbehälter die 16 Bit große Zahlen verwalten.
Warum ist eine explizite Typkonversion (Cast) bei Zuweisungen von Variablen dieser beiden Typen notwendig?
Beispiel:

short sh = 1;;
char ch = 1;
ch = (char)sh;
sh = (short)ch;

Geben Sie ein kurze Erklärung.

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7.: Beispiele impliziter und expliziter Typkonvertierungen

Beispiel einer Zuweisung mit einer impliziten Typkonvertierung:

ll = ii;

Beispiel einer Zuweisung mit einer notwendigen, expliziten Typkonvertierung:

ii = (int) ll;
javafrage Fri, 07/12/2013 - 08:12

9. Bedingt auswertende Operatoren

9. Bedingt auswertende Operatoren

Nennen Sie zwei bedingt auswertende Operatoren und nennen Sie einen Verwendungszweck.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8.: Unterschiede zwischen char und short Typen

char repräsentiert Zeichen und hat einen Wertebereich von 0 bis 216-1. short hat einen Wertebereich von -215 bis 215-1. Beide Wertebereiche überlappen sich nur zur Hälfte. Bei Zuweisungen im nicht überlappenden Bereich kommt es zu Werten die im Zieltyp eine andere Bedeutung haben. Hierdurch können unbemerkt Rechenfehler entstehen.

 

javafrage Wed, 08/21/2013 - 09:59

10. long versus double

10. long versus double

Die Javatypen double und long belegen jeweils 64 Bit Speicherplatz. Nennen Sie zwei Anwendungsfälle in den man den Typ double anstatt long verwenden sollte.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9.: Bedingt auswertende Operatoren

|| und &&. Sie erlauben den Abbruch eines boolschen Ausdrucks wenn das Ergebnis schon feststeht. Die hinteren Teile des Ausdrucks werden dann nicht mehr ausgewertet. Man kann hierdurch unsichere Operationen, wie die Benutzung eines Zeigers, vor dem auslösen einer Ausnahme schützen. Man wertet im ersten Teil des Terms den potentiellen Fehlerfall, hier ein Nullzeiger, aus und fährt nur fort wenn der zweite Teil des Terms sicher ausgewertet werden kann.

 

javafrage Mon, 11/17/2014 - 17:38

11. Automatische Typkonversionen bei Termen (double, long)

11. Automatische Typkonversionen bei Termen (double, long)

Sie addieren eine Variable a von Type double zu einer Variablen b vom Typ long. Was ist der Typ des Ergebnis dieser Addition?
Tragen Sie den Typ den Java, ohne Casting, nach der Addition für die Variable c erwartet ein.
Geben Sie eine kurze Erklärung für Ihre Wahl:

double a = 24.3D;
long   b = 17L;
?      c = a + b;
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 10.: long versus double

  1. Man sollte den Typ double benutzen wenn man erwartet, dass der Wertebereich den eines long Typen überschritten wird.
  2. Man sollte den Typ double benutzen wenn man Werte mit Nachkommastellen verwalten muss

 

javafrage Sat, 08/15/2015 - 13:12

12. Typkonversionen bei Termen (int, long)

12. Typkonversionen bei Termen (int, long)

Addieren Sie zwei sehr große Variablen d und e vom Typ int.
Das Ergebnis wird in der Variable f vom Type long gespeichert. f hat einen größeren Wertbereich damit das Ergebnis korrekt verwaltet werden kann.

Implementieren Sie die Addition im Code unten so, dass in f ein korrektes Ergebnis abgelegt wird.

int d= Integer.MAX_VALUE-2;
int e= Integer.MAX_VALUE-3;
long f =                                     ; // hier implementieren
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 11.: Automatische Typkonversionen bei Termen (double, long)

double a = 24.3D;
long b = 17L;

double c = a +b;

Bei arithmetischen Termen wird die Operation immer im Wertebereich des größten Operanden durchgeführt. Diese ist double.

 

javafrage Sat, 08/15/2015 - 13:25

13. Typen, Arithmetik und Wertebereiche

13. Typen, Arithmetik und Wertebereiche

Was würde geschehen wenn Sie die Summe der beiden Variablen d und e, wie folgt berechnen und in in der Variable g speichern würden?

int d= Integer.MAX_VALUE-2;
int e= Integer.MAX_VALUE-3;
int g = d + e;
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1.78: Typkonversionen bei Termen (int, long)

int d= Integer.MAX_VALUE-2;
int e= Integer.MAX_VALUE-3;

long f = (long)d + (long)e;

 

javafrage Sat, 08/15/2015 - 14:55

Anonymous (not verified)

Wed, 12/16/2020 - 15:45

Hallo,
fehlt bei der Antwort zu Frage 1.78: Typkonversionen bei Termen (int,long) nicht ein Semikolon hinter der zweiten Zeile?

14. int versus float

14. int versus float

Die Javatypen float und int belegen jeweils 32 Bit Speicherplatz.

Nennen Sie zwei Anwendungsfälle in den man den Typ float anstatt int verwenden sollte.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zu Frage 13: Typen, Arithmetik und Wertebereiche

Bei der Addition dieser beiden großen Zahlen kommt es jenseits des positiven Wertebereichs zu einem Überlauf. Das Ergebnis ist negativ (-7 umgenau zu sein). Für Java ist das eine reguläre Operation es wird kein Fehler berichtet obwohl das Ergebnis nicht korrekt ist. Die ist ein Kompromis in der Java Spezifikation um eine extrem effiziente Arithmetik implementieren zu können.

javafrage Sun, 06/19/2016 - 11:24

15. char versus short, Beispiele

15. char versus short, Beispiele

char und short sind, obwohl sind unterschiedlich eingesetzt werden, 16 Bit Zahlentypen in Java.

Hilfe: 215=32768

  1. Nennen sie eine Zahl die man mit short Typen darstellen kann und nicht dem char Typ.
  2. Nennen Sie eine Zahl die man dem char Typ darstellen kann und nicht mit dem short Typ.
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 14. : int versus float

  1. Man sollte float benutzen wenn man erwartet, dass der Wertebereich den eines int Typen übertrifft.
  2. Man sollte float benutzen wenn man Werte mit Nachkommastellen verwalten muss

 

javafrage Sun, 06/19/2016 - 11:38

16. Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float Typen

16. Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float Typen

Was ist die erste ganze Zahl größer Null, die man noch mit dem Typ int darstellen kann aber nicht mit dem Typ float?

Geben Sie eine Erklärung die auf dem Zahlenformat der beiden Typen basiert.

Schreiben Sie ein Programm welches diesen Wert berechnet.

Diese Frage ist für Klausuren etwas zu schwer...

Niveau 1
Schwierigkeitsgrad schwer
Zeit

10 Minuten (Herleitung)
15 Minuten (Programmentwicklung)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 15. char versus short

  1. Im Wertebereich vom short aber nicht im Wertebereich von char : -1
  2. Im Wertebereich von char aber nicht im Wertebereich short: (215 -1) + 1 = 215 = 32768
    1. Herleitung: Größte Wert von short: 215-1. Dann noch mindestens 1 addieren.
javafrage Tue, 01/03/2012 - 12:53

17. Schlüsselwörter

17. Schlüsselwörter

Nennen Sie soviele Java Schlüsselworte wie möglich!

Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 16.: Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float Typen

16777217

Erklärung

Der Typ int kann alle ganzen Zahlen bis 231-1 darstellen (Siehe)

Der Typ float kann alle ganzen Zahlen darstellen solange der Exponent 20 ist. Wird der Exponent zu 21,  kann der Typ float nur noch jede zweite Zahl genau darstellen.

Der größte Wert den man im Typ float in der Mantisse beschreiben kann ist hat alle 23 Bits gesetzt. Der Wert is also 224-1=16777215.

float kann also noch (224-1)*20 = 16777215 darstellen.

Der nächste Wert kann float auch noch darstellen: 224=16777216. Hier wird ein größerer Exponent verwendet und eine 1 steht in der Mantisse.

Die nächste Zahl 16777217 kann aber von float nicht mehr dargestellt werden. Der Exponent muss größer als 20 sein, da die Mantisse nicht mehr ausreicht. Ist der Exponent aber 21 kann man nur noch jede zweite Zahl genau repräsentieren. Ist der Exponent 22, kann man nur noch jede vierte Zahl genau repräsentieren.

Eine mögliche Implementierung

package javafrage;

public class IntVersusFloat {

public static void main(String[] args) {
int i=0;
float j=0.0f;
while (i==(int)j) {
j++;
i++;
}
System.out.println("i: "+i+", j: "+j);
double k = (int)Math.pow(2, 24);
System.out.println(k);
}
}

javafrage Fri, 12/30/2011 - 15:34

18. Typkonversion: Casten

18. Typkonversion: Casten

Was geschieht mit dem Ergebnis einer Zuweisung die von den Basistypen her unsicher ist und mit einem „Cast“ erzwungen wird...

  1. … im günstigsten Fall?
  2. … im ungünstigen Fall?
Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 17 : Schlüsselwörter

Java hat 50 Schlüsselwörter (Siehe)

Wertung

  • 20 und mehr: Ausreichend für den Kurs
  • 40 und mehr: Gurulevel
  • 50: Sie sind wohl James Gosling?
javafrage Tue, 12/27/2011 - 14:26

19. Sichere Zuweisungen

19. Sichere Zuweisungen

Nicht alle Basistypen können wegen ihrer unteschiedlichen Wertebereiche sicher aufeinander zugewiesen werden. Markieren alle sicheren Zuweisungen mit einem Kreuz in der dritten Spalte. Tragen Sie für die unsicheren Zuweisungen eine Zuweisung mit einer Typkonversion(Cast) so ein, so das der Übersetzer die unsichere Zeile ohne Fehler übersetzt.

  Zuweisung Erlaubt und sicher Nicht erlaubt und unsicher
(Zuweisung mit Typkonversion)
Deklaration der Variablen. Belegung sei unbekannt und nicht die Standardinitialisierung
byte by;
short sh;
char ch;
int in;
long lo;
...
Nichts in diese Zelle eintragen Nichts in diese Zelle eintragen
Beispiel a.)
by = lo;
  by = (byte) lo;
Beispiel b.)
by = by;
 X  
1.
lo = lo;
   
2.
lo = in;
   
3.
lo = sh;
   
4.
lo = by;
   
5.
sh = lo;
   
6.
sh = in;
   
7.
sh = ch;
   
8.
sh = by;
   
9.
in = lo;
   
10.
in = in;
   
11.
in = sh;
   
12.
in = by;
   

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit

6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 18: Typkonversion, Casten

  •  … im günstigsten Fall?
    • Nichts. Der zugewiesene Wert ist der korrekte Wert
  •  … im ungünstigen Fall?
    • Der zugewiesene Wert ist kleiner, da Bits die ausserhalb des Wertebereichs des kleineren Typs liegen ohne Fehlermeldung abgeschnitten werden.

 

Antwort zu Frage 19: Sichere Zuweisungen

  Zuweisung Erlaubt und sicher Nicht erlaubt und unsicher
(Zuweisung mit Typkonversion)

Deklaration der Variablen.

Belegung sei unbekannt und nicht die Standardinitialisierung

byte by;
short sh;
char ch;
int in;
long lo;
...
Nichts in diese Zelle eintragen Nichts in diese Zelle eintragen
Beispiel a.)
by = lo;
 
by = (byte) lo;
Beispiel b.)
by = by;
X  
1.
lo = lo;
X  
2.
lo = in;
X  
3.
lo = sh;
X  
4.
lo = by;
X  
5.
sh = lo;
 
sh=(short)lo;
6.
sh = in;
 
sh=(short)in;
7.
sh = ch;
 
sh=(short)ch;
8.
sh = by;
 
9.
in = lo;
 
in=(int)lo;
10.
in = in;
 
11.
in = sh;
 
12.
in = by;
X  
javafrage Tue, 10/02/2012 - 21:40

Fragen zu Ablaufstrukturen

Fragen zu Ablaufstrukturen javafrage Fri, 10/19/2018 - 17:49

1. Codetransformation (if-else)

1. Codetransformation (if-else)

Gegeben ist das folgende Javaprogramm:

public class Main2 {
   static short k;
   public static void main(String[] args) {
      short i, k;
      short imax = 10;
      for (i = 1; i < imax; i++) {
         for (k = 1; k < imax; k++) {
            if ((k == i) || (k == (imax - i))) {
System.out.print("*");
}
else { System.out.print(" "); // ein Leerzeichen
}
} // for k
switch (i) {
case 1:
case 2:
case 3:
case 4:
System.out.println("LINKS");
break;
case 6:
case 7:
case 8:
case 9:
System.out.println("RECHTS");
break;
default:
System.out.println("MITTE");
} // switch
} // for i
} // main
}

Was druckt dieses Programm aus?

Ersetzen Sie die switch Anweisung durch if bzw. if-else Anweisungen. Das Programm soll mit den if Anweisungen die gleichen Ausgaben wie mit der switch Anweisung erzeugen.

Niveau 1
Schwierigkeitsgrad mittel
Zeit

8 Minuten (Konsolenausgaben)

8 Minuten (Codetransformation)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Sat, 12/31/2011 - 13:59

2. Codetransformation von Schleifen

2. Codetransformation von Schleifen

Wandeln Sie die do-while-Schleife in der Methode doWhile() um.
a.) Reimplementieren Sie den vorgebenen Multiplikationsalgorithmus der Methode doWhile() mit Hilfe einer while-Schleife in der Methode nurWhile()
b.) Reimplementieren den vorgebenen Multiplikationsalgorithmus der Methode doWhile() mit einer for-Schleife in der Methode nurFor().

Hinweise:

  • Die Lösungen sollen nur in Bereiche mit weißem Hintergrund eingetragen werden
  • Der Multiplikationsalgorithmus muss nur für positive Werte korrekte Ergebnisse liefern
public class Schleifen { 
public static void main(String[] args) {
int a = 3;
int b = 4;
int c;
if ((a>=1) && (b>=1)) {
c = doWhile(a,b); System.out.println(c);
c = nurWhile(a,b);System.out.println(c);
c = nurFor(a,b); System.out.println(c);
}
} // Ende main public static int doWhile(int a, int b) {
int i = 0;
int ergebnis = 0;
do {
ergebnis += a;
i++;
} while (i < b);

return ergebnis;
}
public static int nurWhile(int a, int b) {
int i = 0;
int ergebnis = 0; // Hier Lösung eintragen return ergebnis; } // Ende nurWhile

public static int nurFor(int a, int b) {
int ergebnis = 0;
int ergebnis = 0;
// Hier Lösung eintragen
return ergebnis;
} // Ende Methode nurFor
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu 1: Codetransformation

Konsolenausgabe:

*       *LINKS
* * LINKS
* * LINKS
* * LINKS
* MITTE
* * RECHTS
* * RECHTS
* * RECHTS
* *RECHTS

Codetransformation:

if (i <5)
System.out.println("Links");
else if (i==5)
System.out.println("Mitte");
else
System.out.println("Rechts");
javafrage Sun, 10/07/2012 - 19:24

Anonymous (not verified)

Thu, 11/25/2021 - 23:58

Sie haben bei der nurFor Schleife im Vergleich zur Lösung einen Fehler. In der Lösung ist bereits schon vor den //hier Lösung eintragen;
ein ergebnis +=a; allerdings ist dies in der Aufgabe nicht so angegeben. Sie müssten, damit alles passt einfach das ergebnis +=a; in der Lösung um eine Zeile verschieben, sodass es nicht mehr im Code überhalb der //hier Lösung eintragen steht.

3. Codetransformation switch-case

3. Codetransformation switch-case

Wandeln Sie die Switch-case Verzweigung der Methode caseVerzweigung() um in if-Verzweigungen. Benutzen Sie hierzu den Rumpf der Methode ifVerzweigung(). Beide Methoden sollen die gleichen Ausgaben mit der Methode drucke() erzeugen.

public class Transformation {
   public static void main(String[] args) {
      caseVerzweigung(3);
      ifVerzweigung(3);
   }

   public static void drucke(String st) { System.out.println(st);}
   
   public static void caseVerzweigung(int s) {
      switch (s) {
         case 2:
         case 4:
            drucke("gerade");
            break;
         case 1:
            drucke("eins");
            break;
        case 3:
            drucke("drei");
            break;
       default:
            drucke("unbekannt");
      } // End switch
   } //Ende Methode caseVerzweigung
   
   public static void ifVerzweigung(int s) {
     // Lösung hier eintragen
   } // Ende Methode ifVerzweigung
}// Ende Klasse Transformation
Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Codetransformation

public class Schleifen {
   public static void main(String[] args) { 
      int a = 3; 
      int b = 4; 
      int c; 
      if ((a>=1) && (b>=1)) { 
         c = doWhile(a,b); System.out.println(c);
         c = nurWhile(a,b);System.out.println(c);
         c = nurFor(a,b);  System.out.println(c);
      }                                          
   } // Ende main                                
    public static int doWhile(int a, int b) {    
       int i = 0;                                
       int ergebnis = 0;                         
          do {                                   
             ergebnis += a;                      
             i++;                                
          } while (i < b);                       
       return ergebnis;                          
   }                                             
   public static int nurWhile(int a, int b) {    
       int i = 0;                                
       int ergebnis = 0;                         
       // Lösung        
       ergebnis += a;
       i++;
       while (i < b) {
           ergebnis += a;
           i++;       } // Ende while Schleife
      return ergebnis;                           
    } // Ende nurWhile                           

public static int nurFor(int a, int b) {
int ergebnis = a;
// Lösung
for (int i = 1; i < b; i++) {
ergebnis += a;
}

return ergebnis;
} // Ende Methode nurFor
}

 

javafrage Sun, 10/14/2012 - 10:34

Anonymous (not verified)

Tue, 12/18/2012 - 13:46

Ist es in diesem Fall wichtig, vor der while-Schleife zu schreiben:
ergebnis += a;
i++;

Ich sehe da keinen Unterschied in der Ausgabe, wenn ich die beiden Zeilen weglasse, da i in dem Beispiel dann 0 wäre, die while-Schleife somit 4 mal durchlaufen würde und als Ergebnis auch 12 rauskommen würde.
Oder gibt es einen Sonderfall, in dem die beiden Zeilen vor der Schleife von Bedeutung sind?

Die while Schleife ist eine abweisende Schleife.
Man kann rein mechanisch den Code im dowhile Block vor die While setzen.
Man muss das natürlich nicht tun, wenn man aus den möglichen EIngaben erkennen kann, dass die Anwendung auf jeden Fall in den while Block kommt.

Aber durch diesen zwang ermöglichen wir die Multiplikation von a * b (b=0) ist das nicht unpraktisch? Habe ich da was übersehen?

Anonymous (not verified)

Tue, 12/16/2014 - 18:46

ich bin der Meinung, dass Sie einen Fehler in der Lösung der Aufgabe gemacht haben.
Sie haben bei nurFor zwei mal ergebnis initialisiert und deklariert

"int ergebnis = 0;"
"int ergebnis = 0;"

jedoch muss es doch eigentlich

"int i = 0;"
und
"int ergebnis = 0;"

sein, oder nicht?

Falls ja, so stimmt Ihre for Schleife ebenfalls nicht, sie würde, dadurch dass wir i bereits deklariert und initialisiert haben,

for( i = 0; i statt
for (int i 0 =; i

lauten.

Sind Sie mit meiner Meinung einverstanden oder habe ich einen Denkfehler?

lG

Anonymous (not verified)

Sun, 12/20/2015 - 16:07

Wieso muss ich hier bei der for-Schleife nicht einmal davor ergebnis+=a; implementieren um zu garantieren, dass die Schleife einmal durchläuft, wie bei der do-while Schleife?

Anonymous (not verified)

Fri, 12/22/2017 - 10:21

In der for-Schleife muss man i = 1 setzen, sonst zählt es einmal mehr durch.

Übrigens sind ihre Captchas echt schwer zu lesen.

4. Codetransformation (while Schleife)

4. Codetransformation (while Schleife)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 0 bis 4 die folgenden Ausgaben erzeugt:
Eingabe: 0 1 2 3 4
Ausgabe:

  • 0
  • 1=1
  • 3=1+2
  • 6=1+2+3
  • 10=1+2+3+4
public class ArithmetischeReihe {

 public static void main(String[] args) {// nur zum Testen
 int c;
 for (int a = 0; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = whileSchleife(a);
   System.out.println(a + ":" + c);
   } // Ende for
 } // Ende Methode main

 public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
   for (int i = 1; i <= a; i++) {
       ergebnis += i;
    }
   return ergebnis;
  }
}

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode whileSchleife(int a) die, die gleichen Ergebnisse mit einer while Schleife erzeugt. Nutzen Sie den folgenden Quellcode:

public static int whileSchleife(int a) {
   int ergebnis = 0;

   return ergebnis;
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Codetransformation switch-case

public class Transformation {
     public static void main(String[] args) { 
        caseVerzweigung(3); 
        ifVerzweigung(3); 
   }

   public static void drucke(String st) { System.out.println(st);}
   
   public static void caseVerzweigung(int s) {
      switch (s) {
         case 2:
         case 4:
            drucke("gerade");
            break;
         case 1:
            drucke("eins");
            break;
        case 3:
            drucke("drei");
            break;
       default:
            drucke("unbekannt");
      } // End switch
   } //Ende Methode caseVerzweigung
   
   public static void ifVerzweigung(int s) {
     // Lösung hier eintragen  
     for (s = 0; s < 6; s++) { //for Schleife nur zum Testen
        if ((s == 2) || (s==4)) drucke("gerade");
           else if (s==1) drucke("eins");
           else if (s==3) drucke ("drei");
           else drucke("unbekannt");
       	}
   } // Ende Methode ifVerzweigung
}// Ende Klasse Transformation
javafrage Fri, 08/16/2013 - 18:56

5. Codetransformation (do-while Schleife)

5. Codetransformation (do-while Schleife)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 1 bis 5 die folgenden Ausgaben erzeugt:

Eingabe: 1 2 3 4
Ausgabe:

  • 1=1
  • 3=1+2
  • 6=1+2+3
  • 10=1+2+3+4
  • 15= 1+2+3+4+5
public class ArithmetischeReihe {

public static void main(String[] args) {// nur zum Testen
int c;
for (int a = 1; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = doWhileSchleife(a);
   System.out.println(a + ":" + c);
   } // Ende for
} // Ende Methode main

public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
   for (int i = 1; i <= a; i++) {
      ergebnis += i;
   }
   return ergebnis;
}

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode doWhileSchleife(int a) die, die gleichen Ergebnisse mit einer dowhile Schleife erzeugt. Nutzen Sie den folgenden Quellcode:

public static int doWhileSchleife(int a) {
   int ergebnis = 0;
   // Code hier einfügen
   return ergebnis;
}
} // Ende der Klasse

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4: Codetransformation (while Schleife)

public static int whileSchleife(int a) {
   int ergebnis = 0;

   int i = 1;
   while (i <= a) {
      ergebnis += i;
      i++;
   }
   return ergebnis;
}
javafrage Wed, 08/21/2013 - 09:19

6. Codetransformation (switch-case Bedingung)

6. Codetransformation (switch-case Bedingung)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 0 bis 4 die folgenden Ausgaben erzeugt:

Eingabe Ausgabe
0 0
1 1=1
2 3=1+2
3 6=1+2+3
4 10=1+2+3+4

 

public class ArithmetischeReihe {

public static void main(String[] args) {// nur zum Testen
int c;
for (int a = 0; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = caseVerzweigung(a);
   System.out.println(a + ":" + c);
   } // Ende for
} // Ende Methode main

public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
for (int i = 1; i <= a; i++) {
ergebnis += i;
}
return ergebnis; }

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode caseVerzeigung(int a) die, die gleichen Ergebnisse mit einer case Verzweigung erzeugt. In der case Verzweigung kann jeweils das Endergebnis aus der Tabelle oben zurückgegeben werden. Nutzen Sie den folgenden Quellcode:

public static int caseVerzweigung(int a) {
int ergebnis = 0;
// Hier Lösung implementieren
return ergebnis;
} // Ende switch } } // Ende der Klasse

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Codetransformation (do-while Schleife)

public static int doWhileSchleife(int a) {
int ergebnis = 0; int i = 1; do { ergebnis += i; i++; } while (i <= a); return ergebnis; }
javafrage Wed, 08/21/2013 - 09:40

Anonymous (not verified)

Sun, 12/20/2015 - 21:14

Was bedeutet ergebnis += i; ich konnte den Operator nicht finden.

Anonymous (not verified)

Wed, 12/14/2016 - 14:42

Guten Tag,

müsste in der Lösung von der Codetransformation das int i = 1 sein und nicht int i = 0 ?
Da die Initialisierung in der Aufgabe in der For Schleide int i = 1 ist?

Mit freundlichen Grüßen!

Das ganze mit 1 loslaufen lassen ist der korrekte Ansatz.
Das Ergebnis eines Starts mit i=0 war korrekt, da eine 0 auf das Ergebnis aufaddiert wurde.
Ich habe die Antwort geändert.

Anonymous (not verified)

Sat, 12/14/2019 - 21:59

Wäre der Sinn der do-while-Schleife nicht mit folgendem Methodenrumpf besser getroffen?:

int ergebnis = 0;
do {
ergebnis += a--;
}while(a>0)
return ergebnis;

Die Variable i wirkt etwas konstruiert um mehr an die vorherige for-Schleife anzulehnen.

Oder ist genau das so gedacht?

7. Implementieren einer for-Schleife

7. Implementieren einer for-Schleife

Implementieren Sie eine for-Schleife die eine Variable i vom Wert 10 bis 20 hoch zählt.

Benutzen Sie den Aufruf System.out.println(i); um den Zählvorgang auf der Konsole auszudrucken.

Achten Sie darauf, dass alle benutzen Variablen deklariert sind!

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Codetransformation (switch-case Bedingung)

public static int caseVerzweigung(int a) {
int ergebnis = 0;
switch (a) {
case 0:
ergebnis = 0;
break;
case 1:
ergebnis = 1;
break;
case 2:
ergebnis = 3;
break;
case 3:
ergebnis = 6;
break;
case 4:
ergebnis = 10;
break;
default:
ergebnis = -1;
break; }
return ergebnis; } // Ende switch
javafrage Sat, 08/15/2015 - 15:53

8. Syntax einer for-Schleife

8. Syntax einer for-Schleife

Nennen Sie die drei Teile des Kopfs einer for-Schleife in der Reihenfolge des Auftretens. Geben Sie eine kurze Erklärung für jeden Bereich

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7: Implementieren einer for-Schleife

 

for (int i=10;i<=20; i++) {
   System.out.println(i);
   }

 

javafrage Sat, 08/15/2015 - 17:37

Anonymous (not verified)

Wed, 11/23/2016 - 12:21

Verbesserung: Nennen SIE die drei... :-)

9. Unterschiede zwischen do-while-Schleifen und for-, while-Schleifen

9. Unterschiede zwischen do-while-Schleifen und for-, while-Schleifen

Was unterscheidet eine do-while Schleifen von while- und for-Schleifen?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8: Syntax einer for-Schleife

  1. Identifikation und Initialisierung der (Lauf)variable mit der Möglichkeit zur Deklaration der Laufvariable
  2. Definition eines Kriterium (logisches Ausdruck) welches bestimmt ob der Schleifenblock ausgeführt
  3. Ausdruck der in der Regel zur Modifikation der Laufvariable benutzt wird nachdem der Block der for-Schleife einmal durchlaufen wird.

Kommentar: Java erlaubt es in allen drei Teilen des Kopfes Ausdrücke zu programmieren die nichts miteinander zu tun haben! Dies ist exotisch, in der Regel kontraproduktiv aber syntaktisch und semantisch möglich.

javafrage Sat, 08/15/2015 - 17:47

10. Codetransformation (while)

10. Codetransformation (while)

Transformieren sie die do-while Schleife der Methode in gleichwertige while-Schleifen und for-Schleifen.
Die main(), nurWhile() und forSchleife() Methoden erlauben Ihnen das Testen der Lösung


public class CodeTrans1 {
    /**
     * main Methode ist die Testinfrastruktur. Sie ist nicht direkt relevant zum
     * lösen der Aufgabe
     *
     * @param args Optionen werden nicht benutzt
     */

public static void main(String[] args) {
int b = 3;
System.out.println("Erster Durchlauf");
System.out.println("Vorgabe:");
doWhile(b);
System.out.println("nurWhile():");
nurWhile(b);
System.out.println("forSchleife():");
forSchleife(b);

System.out.println("Zweiter Durchlauf");
b = 0;
System.out.println("Vorgabe:");
doWhile(b);
System.out.println("nurWhile():");
nurWhile(b);
System.out.println("forSchleife():");
forSchleife(b);
}
/**
* Die Vorgabe der Aufgabe
* @param b
*/
public static void doWhile(int b) {
int i = 0;
String s;
if (b >= 0) { // b ist immer gößer Null!
do {
int k = i * 5;
s = (i % 2 == 0) ? "gerade" : "ungerade";
System.out.println("start():" + k + " ist " + s);
i++; // Schleifeninkrement
} while (i < b);

}
}
public static void nurWhile(int b) {
int i = 0;
String s;

if (b >= 0) { // b ist immer gößer Null!
// Hier die while Schleife implementieren
}
}
public static void forSchleife(int b) {
int i = 0;
String s;

if (b >= 0) { // b ist immer gößer Null!
// Hier die for Schleife implementieren
}
}
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit

12 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9: Unterschiede zwischen dowhile-Schleifen und for-, while-Schleifen

Eine do-while Schleife wird immer mindestens einmal durchlaufen. Sie ist keine abweisende Schleife.

javafrage Tue, 01/03/2012 - 11:30

Anonymous (not verified)

Mon, 12/21/2015 - 22:21

Fehlen bei der for-Schleife nicht die geschweiften Klammern {}?

Stefan Schneider

Fri, 02/26/2016 - 20:50

In reply to by Anonymous (not verified)

Eine for Schleife führt immer einen Block aus. Der Block kann aus mehreren Befehlen in geschweiften Klammern bestehen...

... oder aus einem einzigen Befehl. Die zweite Option wurde hier verwendet.

In solchen Fällen ist immer die Java Spezifikation zur for-Schleife als finale Authorität hinzu zuziehen. :-)

Anonymous (not verified)

Wed, 12/14/2016 - 22:27

Das Feld wird nicht ganz durch iteriert, oder ?
Das Feld ist k+1 lang, es wird aber nur bis k durchlaufen und Werte zugewiesen.

Das Feld ist k+1 Elemente groß. Das erste Element steht auf Position 0 das letzte auf Position k. k ist dann auch der letzte Durchlauf der Schleife.
Die Überlegung war gut. Die Frage ist aber was geschieht mit dem Element auf Position 0?

11. Programmablauf

11. Programmablauf

Gegeben sei das folgende Programm:

package s1.block3;

public class AufgabeSwitchCase {
    static short k;

    public static void main(String[] args) {
        short i, k;
        short imax = 10;
        for (i = 1; i < imax; i++) {
            for (k = 1; k < imax; k++) {
                if ((k == i) || (k == (imax - i))) {
                    System.out.print("*");
                }
                else { System.out.print(" "); // ein Leerzeichen
                }
            } // for k
            switch (i) {
                case 1:
                case 2:
                case 3:
                case 4:
                    System.out.print("LINKS");
                    break;
                case 6:
                case 7:
                case 8:
                case 9:
                    System.out.print("RECHTS");
                    break;
                default:
                    System.out.print("MITTE");
            } // switch
            System.out.println(); //Neue Zeile
        } // for i
    } // main
}
  • Markieren Sie alle Schlüsselwörter
  • Arbeiten Sie jetzt das Programm ab und tragen Sie die Konsolenausgaben von oben nach unten auf ein (kariertes) Blatt Papier ein.

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 8+3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zu 10: Codetransformation

public class CodeTrans1 {
    public static void main(String[] args) {
        int b = 3;
        System.out.println("Erster Durchlauf");
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
        // Zweite Testrunde
        System.out.println("Zweiter Durchlauf");
        b = 0;
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
    }
    /**
     * Die Vorgabe der Aufgabe
     * @param b 
     */
    public static void doWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            do {
                int k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            } while (i < b);
        }
    }
    public static void nurWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            i++; // Schleifeninkrement
            while (i < b) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            }
        }
    }
    public static void forSchleife(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            for (i = 1; i < b; i++) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
            }
        }
    }
}

Ergibt die folgende Ausgabe:

Erster Durchlauf
Vorgabe:
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
nurWhile():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
forSchleife():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
Zweiter Durchlauf
Vorgabe:
start():0 ist gerade
nurWhile():
start():0 ist gerade
forSchleife():
start():0 ist gerade

javafrage Sun, 09/08/2013 - 11:35

Anonymous (not verified)

Fri, 12/04/2015 - 17:59

Ist es gewollt, dass in der Antwort zu 1.66 bei der letzten Typkonversion weder ein Downcast, noch "//sichere Typkonversion" steht?

12. Erweiterte (Enhanced) For-Schleife

12. Erweiterte (Enhanced) For-Schleife

Warum kann man nicht so einfach die folgende for-Schleife in eine enhanced-for Schleife umwandeln?

public static int forSchleife(int a) {//Vorgabe
       int ergebnis = 0;
       for (int i = 1; i <= a; i++) {
          ergebnis += i;
       }
    return ergebnis;
    }
Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Antwort zu Frage 11: Programmablauf

Schlüsselwörter im Programm:

public class Main2 {
   static short k;    

   public static void main(String[] args) {
     short i, k;
     short imax = 10;
     for (i = 1; i < imax; i++) {
       for (k = 1; k < imax; k++) {
           if ((k == i) || (k == (imax - i))) {
              System.out.print("*");
                } 
            else { System.out.print(" "); // ein Leerzeichen 
                 }
       } // for k
       switch (i) {
          case 1:
          case 2:
          case 3:
          case 4:
              System.out.println("LINKS");
              break;
          case 6:
          case 7:
          case 8:
          case 9:
              System.out.println("RECHTS");
              break;
          default:
              System.out.println("MITTE");
       } // switch
     } // for i
    } // main
}

Konsolenausgaben des Programms

*       *LINKS
 *     * LINKS
  *   *  LINKS
   * *   LINKS
    *    MITTE
   * *   RECHTS
  *   *  RECHTS
 *     * RECHTS
*       *RECHTS

Antwort zu Frage 12:

Die variable i wird im Block der For-Schleife verwendet. In der Enhanced-For-Schleife gibt es aber keine Zählvariable die man verwenden könnte.

javafrage Thu, 11/26/2020 - 10:02

Fragen zu Methoden und Konstruktoren

Fragen zu Methoden und Konstruktoren javafrage Sun, 10/21/2018 - 17:44

1. Methoden Implementieren und Dokumentieren

1. Methoden Implementieren und Dokumentieren

Gehen wir von einer öffentlichen Methode rechteck() aus, die a und b als Parameter übergeben bekommt und c als Rückgabewert liefert, wobei die Formel a* b = c verwendet werden soll.

  1. Geben Sie die Definition und Implementierung der Methode an und wählen Sie hierbei die Datentypen sinnvoll
  2. Geben Sie an, wie hier ein guter Dokumentationskommentar lauten sollte.
Niveau 1
Schwierigkeitsgrad mittel
Zeit

5 Minuten für Methode

4 Minuten für Dokumentationskommentar

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Wed, 12/28/2011 - 09:55

Anonymous (not verified)

Wed, 11/27/2013 - 14:39

Hier ist ein Schreibfehler : "4 Minuten für Dolimentationskommentar"
Sie meinten bestimmt "Dokumentationskommentar"

Danke schön,

ich habe es korrigiert.
Das war blind geschrieben. Im wahrsten Sinn des Wortes.

2. Konstruktoren

2. Konstruktoren

Warum kann man in Java nicht mehr den default Konstruktor benutzen nachdem man einen eigenen Konstruktor implementiert hat?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Methoden Implementieren und Dokumentieren

/**
* Diese Methode berechnet die Flaeche eines Rechtecks
* @param a eine Seite des Rechtecks
* @param b eine Seite des Rechtecks
* @return die Fläche des Rechtecks
*/
public float rechteck(float a, float b) {
float c = a* b;
return c;
}

 

javafrage Wed, 12/28/2011 - 14:20

Anonymous (not verified)

Sun, 12/06/2015 - 11:22

Guten Tag,
bei Frage 1.10 sollte eine Klassenmethode implementiert werden - fehlt in der Antwort dann nicht das static?
LG

Die Methode sollte wirklich statisch sein. Da es hier aber nur um die Dokumentation geht, habe ich mir erlaubt die Frage neu zu formulieren.

3. Lebensdauer lokaler Variablen

3. Lebensdauer lokaler Variablen

Wodurch wird die Lebensdauer einer lokalen Variablen bestimmt? Was läßt sich über ihren Standard (default) Initialwert sagen?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Konstruktoren

Dies ist eine Implikation des Prinzips der Datenkapselung. Eine Klasse mit einem selbst implementierten Konstruktor soll keine Möglichkeit mehr bieten diesen Konstruktor zum Umgehen. Nur das Sperren des default Konstruktors kann garantieren, dass die Klasse im Sinne des Entwicklers initialisiert wird. 

 

javafrage Fri, 12/30/2011 - 15:03

4. Implementierung einer Methode

4. Implementierung einer Methode

Implementieren Sie eine Methode nach den folgenden Vorgaben:

  • Die Methode ist öffentlich und statisch. Sie kann ohne die Existenz eines Objekts aufgerufen werden.
  • Methodenname ist „quaderVolumen“
  • Eingaben sind die drei Seiten eines Quaders. Wählen Sie die Parameternamen a,b,c
  • Ausgabe ist das Volumen des Quaders
  • Der Rückgabewert ist das Volumen des Quader. v=a*b*c (Produkt der drei Seitenlängen)
  • Geben Sie den Wert 0 zurück, falls eine oder mehrere Seiten negative Eingabewerte besitzen
  • Wählen Sie sinnvolle Typen für die Ein- und Ausgabeparameter

Hinweis: Achten Sie auf die Syntax!

Niveau 1
Schwierigkeitsgrad mittel
Zeit 7 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3 : Lebensdauer lokaler Variablen

Durch den Block in dem sie definiert sind. Sie werden nach Verlassen des Blocks gelöscht. Die Variablen werden bei der Deklaration auf dem Stack (Stapel) angelegt. Nach Verlassen des Blocks werden alle Variablen des Blocks wieder vom Stack (Stapel) genommen und gelöscht.

Sie müssen vom Entwickler initialisiert werden.

javafrage Tue, 10/16/2012 - 08:53

5. Syntax des Methodenkopf in Java

5. Syntax des Methodenkopf in Java

Nennen Sie drei Bestandteile eines Methodenkopfes. Beschreiben Sie die jeweilige Funktion in Stichworten.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4: Implementierung einer Methode

public static double quaderVolumen(double a, double b, double c) {
double v = 0.0;
if ((a>0) && (b>0) && (c>0))
v = a*b*c;
return v;
}

 

javafrage Wed, 10/17/2012 - 16:55

Anonymous (not verified)

Tue, 12/19/2017 - 20:43

muss es in der if verzweigung nicht if ((a>0) || (b>0) || (c>0)) heißen, da es in der Aufgabenstellung ja heißt wenn einer der Werte kleiner null ist

Stefan Schneider

Wed, 12/20/2017 - 10:34

In reply to by Anonymous (not verified)

Interessante Frage. Hier gilt der Satz von de Morgan. Wenn "einer kleiner Null ist, dann nicht" ist eine implizite Oder Verknüpfung. Nach de Morgan habe ich implementiert "alle größer Null, dann". Man kann das also auch mit Oder implementieren,

Anonymous (not verified)

Thu, 12/21/2017 - 12:37

In reply to by Stefan Schneider

Geben Sie den Wert 0 zurück, falls eine oder mehrere Seiten negative Eingabewerte besitzen:

Dann ist in diesem Fall aber die Aufgabenstellung nicht korrekt oder ?
Da mit der Implementierung mit AND davon ausgegangen wird das alle Werte 0 sein müssen.

6. Überladene Methoden

6. Überladene Methoden

Java kennt überladene sowie überschriebene Methoden.  Woran erkennt man überladene Methoden? 

  • Geben Sie eine kurze Erklärung
  • Geben Sie ein Beispiel zweier überladener Methoden. Wichtig:
    • benötigte Klasse bzw. Klassen
    • benötigte Methoden (Name, Signatur etc). Methodenrümpfe sind nicht wichtig. Kürzen Sie sie mit {…} ab 
Niveau 1
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Bestandteile des Methodenkopfs

  1. Rückgabewert: Ein Typ oder void (keine Rückgabe) die ein Ergebnis der Methode ausgibt
  2. Name: gültiger Javabezeichner
  3. Eingabeparameterliste: Eine Komma separierte Liste von Variablen die einer Methode als Eingabewerte mit gegeben werden können
  4. Modifizierer: Zugriffsrechte auf eine Methode

 

javafrage Thu, 10/18/2012 - 17:49

Anonymous (not verified)

Sun, 11/29/2015 - 13:22

Bei der Methode setAtt fehlt zum schließen der Methode noch eine geschweifte Klammer, bevor die getAtt Methode beginnt.

7. Implementieren und Dokumentieren einer Methode einsteigen()

7. Implementieren und Dokumentieren einer Methode einsteigen()

Implementieren Sie die Methode einsteigen(int p) für die Klasse Flugzeug

Die Methode einsteigen() soll die folgenden Eigenschaften haben:

  • öffentlich ausserhalb des Pakets zugreifbar
  • Angabe der Anzahl der Passagiere die zusteigen als Eingabeparameter
  • Prüfung auf nicht negative Passagieranzahl.
  • Bei negativem Wert der zusteigenden Passagiere wird die aktuelle Anzahl nicht modifiziert.
  • Erhöhen der Objektvariblen passagiere um die Anzahl der zugestiegenen Passagiere
  • Rückgabe der neuen Gesamtanzahl aller Passagiere.

Schreiben Sie einen Dokumentationskommentar für die Methode einsteigen()

  • Achten Sie auf die Notation von
  • Syntax des Dokumentationskommentars
  • Beschreibung der Methode mit einem vernünftigen Satz
  • Dokumentation der Eingabewerte
  • Dokumentation des Ausgabewerts

Tipp: Was kommt zuerst: Methode oder Dokumentation?

public class Flugzeug {
   private int passagiere;
      // Ab hier Dokumentationskommentar und Methode implementieren
} // Ende der Klasse Flugzeug

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 (Methode) +4 (Dokumentation) Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Überladene Methoden

Eine Methode überlädt eine Methode der gleichen Klasse wenn sie den gleichen Namen aber unterschiedliche Eingabeparameter hat. Eingabeparameter sind unterschiedlich wenn sie eine unterschiedliche Anzahl von Parametern oder eine unterschiedliche Reihenfolge der Typen haben. Die Namen der Parameter spielen keine Rolle.
Anmerkung: Das Prinzip gilt auch über Vererbungshierarchien hinweg.

Beispiel

public class Ober {
public void print() {…}
public void print(int i) {...} }
javafrage Fri, 08/23/2013 - 08:51

8. Rekursive Methoden

8. Rekursive Methoden

Welche zwei Kommandozeilenausgaben erzeugt das Programm?

Was berechnet das Programm in der Methode?

Das Programm Test nutzt die main() Methode zum Testen der Methode berechneRekursiv() mit den Werten 9 und 89.

public class Test {
    /**
     * Hauptprogramm: Nur zum Testen
     * @param args
     */
    public static void main(String[] args) {
        int eingabe;
        int erg;
        eingabe = 9;
        erg = berechneRekursiv(eingabe);
        System.out.println(eingabe + " : " + erg);
        eingabe = 89;
        erg = berechneRekursiv(eingabe);
        System.out.println(eingabe + " : " + erg);
    }
    /**
     * Diese Methode berechnet die/der/das ? der Eingabe
     *
     * @param eing : Eingabewert
     * @return a Ergebnis ist die ?
     */
    static private int berechneRekursiv(int eing) {
        int a;
        if (eing == 0) a = 0; //Beende Rekursion
        else { // a ist größer als Null. Fahre mit Rekursion fort
            a = eing%10;
            a= a + berechneRekursiv(eing/10);
        }
        return a;
    }
} 
Niveau 1
Schwierigkeitsgrad mittel
Zeit 4+2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7: Implementieren und Dokumentieren einer Methode einsteigen()

public class Flugzeug {

   private int passagiere;
   // Ab hier Dokumentationskommentar und Methode implementieren
   /** 
   * diese Methode lässt Passagiere einsteigen. Die Anzahl der
   * Passagiere erhöht sich um den Wert p. Der Wert p muss positiv sein.
   * @param p Anzahl der Passagiere die zusteigen 
   * @return neue Anzahl der Passagiere
   */
    public int einsteigen(int p) {
       if (p>0)
          passagiere += p;
       return passagiere;    
   }
} // Ende der Klasse Flugzeug

 

javafrage Tue, 08/26/2014 - 18:12

Anonymous (not verified)

Sun, 11/06/2016 - 14:56

Beschreiben "2." und "4." nicht die gleichen Anforderungen?

Wenn ein Algorithmus terminiert hat er doch automatisch endlich viele Teilschritte, nicht?
Hätte er unendlich viele Teilschritte, dann würde er doch nicht terminieren.

Oder irre ich mich?

9. Syntax eines Methodenkopf

9. Syntax eines Methodenkopf

Beschreiben Sie die Bestandteile des Methodenkopfs der vorherigen Aufgabe:

    static private int berechneRekursiv(int eing) {...} 

Nennen Sie den Namen des Bestandteils und die Bedeutung für die Methode

  • static
  • private
  • int
  • berechneRekursiv
  • (int eing)
Niveau 1
Schwierigkeitsgrad mittel
Zeit 10 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8: Rekursive Methoden

Die Kommandozeilenausgaben sind:

9 : 9 
89 : 17 

Das Programm berechnet die Quersumme.

javafrage Fri, 08/29/2014 - 12:42

10. Transformation einer rekursiven Methode in eine iterative Methode

10. Transformation einer rekursiven Methode in eine iterative Methode

Implementieren sie die Methode berechne() die das gleiche Ergebnis wie Methode berechneRekursiv() liefert.
Die Methode berechne() soll

  • iterativ sein und
  • eine while Schleife implementieren
     /**
     * Diese Methode berechnet die Quersumme der Eingabe
     *
     * @param eing : Eingabewert
     * @return a Ergebnis ist die ?
     */
    static private int berechneRekursiv(int eing) {
        int a;
        if (eing == 0) a = 0; //Beende Rekursion
        else { // eing ist größer als Null. Fahre mit Rekursion fort
            a = eing%10;
            a= a + berechneRekursiv(eing/10);
        }
        return a;
    }
 
Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9: Syntax eines Methodenkopf

Methodenkopf
Name des Bestandteils
Bedeutung für diese Methode
private Modifier
Die Methode ist nur innerhalb der Klasse aufrufbar
static Modifier
Die Methode darf auch ohne Objektkontext verwendet werden
int
Rückgabewert
Ergebnis der Methode
berechneRekursiv
Methodenname
Name der Methode
(int eing) Formalparameter
Übergabeparameter für die Methode
javafrage Fri, 08/29/2014 - 17:20

11. Vergleich der Syntax von Konstruktoren und normalen Methoden

11. Vergleich der Syntax von Konstruktoren und normalen Methoden

Wie unterscheidet sich die Syntax eines Konstruktorkopf vom Kopf einer normalen Methode?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 10: Transformation einer rekursiven Methode in eine iterative Methode

     /**
     * Diese Methode berechnet die Quersumme der Eingabe iterativ
     *
     * @param eing : Eingabewert
     * @return a Ergebnis ist die ?
     */
    static private int berechne(int eing) {
       int a = 0;
       while (eing != 0) {
          a = a+ eing%10;
          eing/= 10; 
       }
       return a;
    }
 

 

javafrage Tue, 09/09/2014 - 09:00

Anonymous (not verified)

Wed, 12/17/2014 - 23:46

Ist Ihnen in der while Schleife nicht einiges durcheinander geraten? Warum soll a+eing%10 auf a zugewiesen werden? Das a hat zu diesem Zeitpunkt doch keinen Wert, also bringt es nichts, es zu addieren oder?
der Befehl danach: eing/=10; scheint mir genauso fragwürdig zu sein. Er ändert ja nichts an a und schließlich wird ja a zurück gegeben. Ich bezweifle, dass diese Methode die gleichen Ergebnisse liefert. Müsste es nicht so sein?
while (eing > 0) {
a=eing%10;
a=a+eing/10;
}
return a;
}
Gruß von einem Studenten der sein Leben in Bezug auf Java nicht im Griff hat (hoffentlich hatte).

Stefan Schneider

Thu, 12/18/2014 - 09:08

In reply to by Anonymous (not verified)

Willkommen im Club derer die Java nicht voll im Griff haben. Ich hatte auch schon Meetings mit Spec. Leads von Java die nicht mehr weiter wussten. Das geht uns allen so.

Der Befehl

eing/=10;

macht das gleiche wie der Befehl

eing = eing/10;

damit funktioniert das hoffentlich

Anonymous (not verified)

Mon, 12/21/2015 - 10:30

Bei der rekursiven Methode muss doch der Wert von eing nicht unbedingt über 0 sein, er darf doch lediglich nicht 0 sein.
Bei der iterativen Methode werden von while(eing>0) aber doch alle negativen Werte ausgeschlossen.

12. Dokumentationskommentare und Datenkapselung

12. Dokumentationskommentare und Datenkapselung

Die Klasse Flugzeug besitzt ein Attribute passagiere zur Verwaltung der aktuellen Passagieranzahl und eine Konstante MAX_PASSAGIERE.

  • Schützen Sie die aktuelle Anzahl der Passagiere mit einem Modifizierer so, dass man nur noch mit Methoden der Klasse Flugzeug auf dieses Attribut zugreifen kann. Tragen Sie den Modifizierer in den Quellcode an die richtige Stelle ein.
  • Die maximale Anzahl der Passagiere soll unveränderlich sein. Wählen Sie einen geeigneten Modifizierer und tragen Sie ihn im Quellcode ein.
  • Implementieren Sie eine Methode einsteigen().
    • Die Methode soll mit einem Eingabeparameter n Passagiere einsteigen lassen.
    • Sie gibt die Anzahl der Passagiere nach dem Einsteigen als Ergebnis zurück.
    • Sie verändert die Anzahl der Passagiere nicht, falls nach dem Einstiegen die maximale Kapazität (MAX_PASSAGIERE) überschritten ist.
    • Die Methode soll auch aus anderen Paketen aufrufbar sein .
  • Erstellen Sie einen Dokumentationskommentar, der die Methode und die Ein- und Ausgabeparameter dokumentiert,
public class Flugzeug {
      int passagiere;
      int MAX_PASSAGIERE;
   // Ab hier Methode und Dokumentationskommentar implementieren

} // Ende der Klasse Flugzeug
Niveau 1
Schwierigkeitsgrad mittel
Zeit 11 Minuten (1+1+5+4)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 11: Vergleich der Syntax von Konstruktoren und normalen Methoden

  • Ein Konstruktor hat keinen Rückgabewert
  • Der Name eines Konstruktors ist immer identisch mit dem der Klasse

Antwort zu Frage 12: Dokumentationskommentare und Datenkapselung

public class Flugzeug {
   private  int passagiere;
   final    int MAX_PASSAGIERE;
 
   /**
   * n Passagiere steigen in ein Flugzeug ein. Bei Überschreiten
   *  der maximalen Kapazität wird allen Passagieren der Zutritt
   *  verwehrt
   * @param n Anzahl der zusteigenden Passagiere
   * @return Anzahl der Passagiere nach dem Zusteigen
   */
   public int einsteige(int n) {
     if (MAX_PASSAGIERE>=passagiere+n) passagiere +=n;
     return passagiere;
   }
}
javafrage Thu, 09/11/2014 - 17:32

Anonymous (not verified)

Sat, 12/06/2014 - 10:29

Der Code der Lösung ist Identisch mit dem in der Aufgabe, ist das gewollt?

javafrage

Sun, 12/07/2014 - 12:24

In reply to by Anonymous (not verified)

Danke. Die Musterlösung sollte jetzt stimmen.

Anonymous (not verified)

Sun, 12/20/2015 - 16:31

Müsste der Import Befehl in Klasse 1a nicht "import Paket2.*" lauten?

13. Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)

13. Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)

Implementieren Sie unten eine vollständige Javaklasse die den folgenden Bedingungen genügt:

  • Die Klasse liegt im Paket Paket1 (1 Min.)
  • Der Name der Klasse ist Student (1 Min.)
  • Die Klasse Student ist von jeder anderen Klasse benutzbar (1 Min.)
  • Die Klasse Student wird aus der Klasse Person spezialisiert (1 Min.)
  • Die Klasse Person befindet sich in Paket Paket2
  • Die Klasse Student hat die folgenden Attribute:
    • universitaet: privater Zeiger auf die Klasse Adresse aus dem Paket Paket2 (1 Min.)
    • name: öffentliche Zeichenkette (1 Min.)
  • Klasse Student hat einen öffentlichen Konstruktor(1 Min.)
    • Der Konstruktor hat keine Argumente
    • Das Attribut name wird auf „Rühmann“ im Konstruktor initialisert (1 Min.)
  • Die Klasse Student hat öffentliche „Getter“ und eine „Setter“ Methoden zum Pflegen der Adresse (4 Min.)
  • Die Klasse Student verfügt über alle Importdeklaration damit sie übersetzt (2 Min.)
Niveau 1
Schwierigkeitsgrad mittel
Zeit 14 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Sun, 08/16/2015 - 10:02

14 Unterscheidung überladener Methoden

14 Unterscheidung überladener Methoden

Erklären Sie, woran überladene Methoden mit gleichem Namen unterschieden werden.

Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 13: Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)

package Paket1;

import Paket2.Adresse;
import Paket2.Person;

public class Student extends Person {
   private Adresse unversitaet;
   public String name;
  
   public Student() {
      name = "Rühmann";
   }
   
   public Adresse getUnversitaet() {
      return unversitaet;
   }
   
   public void setUnversitaet(Adresse unversitaet) {
      this.unversitaet = unversitaet;
   }
   
}
javafrage Thu, 12/29/2011 - 16:31

15. new Operator

15. new Operator

Welche beiden Typen von Datenstrukturen können mit dem new Operator angelegt werden?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zu Frage 14: Unterscheidung überladener Methoden

Anhand der Anzahl der Parameter und ihrer Typen abhängig von ihrer Reihenfolge. Die Variablennamen der Übergabeparameter spielen keine Rolle bei der Unterscheidung.

Der Typ des Rückgabeparameters wird nicht zur Unterscheidung verwendet.

javafrage Fri, 12/30/2011 - 12:45

16. Wo werden Datenstrukturen mit dem new Operator angelegt?

16. Wo werden Datenstrukturen mit dem new Operator angelegt?

In welchem Speicherbereich liegen alle Datenstrukturen, die mit dem new Operator angelegt wurden?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 15: new Operator

  • Felder von Basistypen oder Objekten
  • Objekte (das heißt Instanzen von Klassen)
javafrage Fri, 12/30/2011 - 14:52

17. Konstruktoraufrufe in Konstruktoren (Abfolge)

17. Konstruktoraufrufe in Konstruktoren (Abfolge)

An welcher Stelle im Konstruktor kann man andere Konstruktoren aufrufen und warum müssen andere Konstruktoraufrufe an dieser Stelle aufgerufen werde. Geben Sie eine kurze Begründung.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 16: Wo werden Datenstrukturen mit dem new Operator angelegt?

Auf dem Heap, dem Freispeicher. Sie werden dort solange gehalten wie sie referenziert werden. Anschließend werden sie von einen Garbagekollektor gelöscht.

Antwort zu Frage 17: Konstruktoraufrufe in Konstruktoren (Abfolge)

Man kann andere Konstruktoren nur als ersten Befehl aufrufen.
Damit wird garantiert, dass der aufgerufene Konstruktor auf einem nicht modifizierten Objekt ausgeführt werden kann.

javafrage Sun, 08/16/2015 - 11:30

Fragen zu Konzepten objektorientierter Programmierung

Fragen zu Konzepten objektorientierter Programmierung javafrage Sun, 11/11/2018 - 10:52

1. Der Modifizierer "static" in Javamethoden

1. Der Modifizierer "static" in Javamethoden

Warum werden Methoden bei Bedarf mit dem Modifizierer static gekennzeichnet?

Nennen sie eine bekannte static Methode aus dem Java API

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Thu, 12/29/2011 - 14:37

2. Anzahl von Instanzen (Objekte) erkennen

2. Anzahl von Instanzen (Objekte) erkennen

Ein Javaprogramm wird für die Klasse B gestartet. Die Klasse B verwendet in ihrer main() Methode und methode1() Methode Instanzen der Klasse B:

class B {
   public static void main(String[] args) {
      B var1 = new B();
      B var2 = methode1(var1);
   }
   
   public static B methode1(B para1) {
     B var3 = para1;
     System.out.println(var3);
     para1 = null;
     B var4 = para1;
    return var3;
  }
}

Wieviele Instanzen der Klasse B werden im Verlauf des Programmes erzeugt und woran erkennen Sie das?

Welche Referenzvariablen (Objektvariablen) zeigen im Laufe des Programms (zumindest temporär) auf Instanzen der Klasse B?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Der Modifizierer "static" in Javamethoden

Damit man sie auch ohne die Existenz von Instanzen (Objekten) der entsprechenden Klasse aufrufen kann.
Die Methode public static void main(String[] args) zum Starten eines Hauptprogramms.

javafrage Fri, 12/30/2011 - 12:28

3. Konstruktoren, Abfolge

3. Konstruktoren, Abfolge

Die main() Methode der Klasse Unterklasse erzeugt eine Instanz der Klasse Unterklasse. Verfolgen Sie den Ablauf des Programms welches mit dem Befehl

java Unterklasse

gestartet wird. Numerieren sie alle aufgerufenen Ausgaben (System.out.println) in der aufgerufenen Reihenfolge durch.
Der erste Aufruf im Befehl:

System.out.println("Start"); // 1

ist bereits als Hilfe dokumentiert. Fahren sie mit „// 2“ etc. hinter dem Quelltext fort

public class Oberklasse {
   public Oberklasse () {
      System.out.println("Oberklasse-ohne-parameter"); 
   }
   public Oberklasse (String text) {
      this();
      System.out.println("Oberklasse-mit-String"); 
   }
}
 
public class Unterklasse extends Oberklasse {
   public Unterklasse (int zahl) {
      super ("Hallo");
      System.out.println("Unterklasse-mit-int");
   }
   public Unterklasse () {
      System.out.println("Unterklasse-ohne-Parameter");
   }
   public static void main(String[] args) {
System.out.println("Start"); // 1
Unterklasse u = new Unterklasse(8);
}
}

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Anzahl von Instanzen(Objekten) erkennen

Wieviele Instanzen der Klasse B werden im Verlauf des Programmes erzeugt und woran erkennen Sie das?

  • Es wurde ein Objekt erzeugt.
  • Man erkennt es am new Operator. Nur durch Aufrufe des new Operators werden Objekte erzeugt,

Welche Referenzvariablen (Objektvariablen) zeigen im Laufe des Programms (zumindest temporär) auf Instanzen der Klasse B?

  • var1, para1, var3, var2
javafrage Wed, 12/28/2011 - 15:45

Anonymous (not verified)

Thu, 11/26/2015 - 20:33

diese Aufgabe ist bei der Lernzielkontrolle zu Kapitel 6 aufgeführt.
Ist sie zu diesem Zeitpunkt wirklich schon lösbar? Ohne zu wissen, wie "extends" funktioniert ist der Ablauf doch nicht nachvollziehbar, oder?

Anonymous (not verified)

Sun, 04/11/2021 - 17:49

Fehlt hier nicht noch var4? Denn var3 wird hier auch als Referenzvariable aufgeführt

4. Schlüsselwort this

4. Schlüsselwort this

Wozu verwendet man in Java das Schlüsselwort this? Geben Sie eine kurze Erklärung.

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten


Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Konstruktoren

public class Oberklasse {
public Oberklasse () {
System.out.println("Oberklasse-ohne-parameter"); // 2
} public Oberklasse (String text) { this(); System.out.println("Oberklasse-mit-String"); // 3 } } public class Unterklasse extends Oberklasse { public Unterklasse (int zahl) { super ("Hallo"); System.out.println("Unterklasse-mit-int"); // 4 } public Unterklasse () { System.out.println("Unterklasse-ohne-Parameter"); } public static void main(String[] args) { System.out.println("Start"); // 1 Unterklasse u = new Unterklasse(8); } }
javafrage Wed, 12/28/2011 - 16:55

Anonymous (not verified)

Fri, 02/26/2016 - 15:05

Eine genauere Erläuterung der Antwort der Frage wäre zum Verständnis hilfreich, z.B. wieso der Konstruktor der Oberklasse aufgerufen wird, aber nicht der der Unterklasse.

Ebenso die Ablaufreihenfolge des Programms, ob sich ein Programm immer von oben nach unten durcharbeitet, nachdem die Main-Methode ausgeführt wurde, oder ob es sich danach von Oberklasse nach Unterklasse durcharbeitet.

5. Konstruktoren und Datenkapselung

5. Konstruktoren und Datenkapselung

Warum sind Konstruktoren hilfreich wenn man Datenkapselung (Information Hiding) implementieren möchte?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4: Schlüsselwort this

Zum Referenzieren des Objekts dessen Methode gerade ausgeführt wird oder zum Aufruf eines Konstruktors der gleichen Klasse

javafrage Thu, 12/29/2011 - 14:21

Sehr gut beobachtet. Danke.
Das Semikolon ist überflüssig. Syntaktisch ist das aber OK. Zwischen zwei Semikolon muss eine oder keine Anweisung stehen.

6. Anwendung der Datenkapselung in Java

6. Anwendung der Datenkapselung in Java

Gegeben sei eine Klasse Test mit einem öffentlichen Attribut att vom Typ int.

public class Test {
   public int att;
}

Implementieren Sie die Klasse neu und wenden Sie das Prinzip der Datenkapselung auf das Attribut att an.
Schützen Sie das Attribut att mit denen in Java zur Verfügung stehenden Mitteln. Stellen Sie sicher, dass das Attribut nie eine negative Belegung hat.
Hinweis: Der Benutzer muss bei Fehleingaben nicht benachrichtigt werden. Setzen Sie den Wert bei Fehleingaben nicht. Es muss kein Konstruktor implementiert werden.
 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Konstruktoren und Datenkapselung

Mit Konstruktoren kann man eine bestimmte Initialisierung von privaten (d.h. gekapselten) Attributen erzwingen. 

javafrage Thu, 10/18/2012 - 17:24

7. Nutzen von Konstruktoren

7. Nutzen von Konstruktoren

Wozu sind Konstruktoren in Java nützlich?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Datenkapselung in Java

public class Test {
   private int att;

   public int get_att() {return att;}
   public void set_att(int a) {
      if (a>=0) att=a;
   }
}
javafrage Fri, 08/30/2013 - 10:37

8. Syntax Konstruktorkopf

8. Syntax Konstruktorkopf

Wie unterscheidet sich die Syntax eines Konstruktorkopf vom Kopf einer normalen Methode?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7.: Nutzen von Konstruktoren

Konstruktoren erlauben das Implementieren von Datenkapselung. Objekte können so mit einem definierten konsistenten Ausgangszustand erzeugt werden.

javafrage Sun, 09/01/2013 - 20:09

9. Schlüsselwort private in Konstruktoren

9. Schlüsselwort private in Konstruktoren

Was bedeutet es, wenn man alle Konstruktoren einer Klasse mit dem Modifzierer „private“ versieht?

Wie kann man eine solche Klasse noch nutzen?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8.: Syntax Konstruktorkopf

  • Konstruktoren haben keinen Platz für Rückgabeparameter in der Syntax.
    • Sie haben auch kein void Schlüsselwort als Rückgabeparameter. Der Rückgabeparameter fehlt in der Syntax.
    • Der Grund:
      • Konstruktoren werden immer nur vom new Operator aufgerufen.
      • Der new Operator reicht zwar die Eingabeparameter weiter. Er kann aber nicht eine beliebige Rückgabe auswerten.
  • Der Name eines Konstruktors ist immer identisch mit dem Namen der Klasse. Man kann ihn nicht frei wählen wie bei einer Methode.
javafrage Sun, 09/01/2013 - 20:17

10. Aufruf von Konstruktoren der gleichen Klasse

10. Aufruf von Konstruktoren der gleichen Klasse

Mit welchem Schlüsselwort kann man in Java aus einen Konstruktor einen anderen Konstruktor der gleichen Klasse aufrufen?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 1 Minute

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9.: Schlüsselwort private in Konstruktoren

Andere Klassen können keine Objekte dieser Klasse erzeugen. Objekte können nur von der Klasse selbst erzeugt werden.

Man kann die Objekterzeugung einer statischen, öffentlichen Methode der gleichen Klasse überlassen um ein Designpattern wie ein Singleton oder eine Factory zu implementieren.

javafrage Wed, 09/04/2013 - 09:35

11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

Implementieren Sie in Java einen rekursiven Konstruktor zum Erzeugen gleichseitiger Dreiecke in der Klasse Dreieck.

Nutzen Sie den existierenden Konstruktor bei dem drei unterschiedliche Seiten erfasst werden.
Der Kopf des rekursiven Konstruktor für gleichseitige Dreiecke ist gegeben.
Implementieren Sie einen Rumpf der ein gleichseitiges Dreieck implementiert und den existierenden Konstruktor nutzt.

public class Dreieck {
   double seite1;
   double seite2;
   double seite3;
  /** Erzeugen eines Dreiecks mit drei unterschiedlichen Seiten
  */
   public Dreieck (double a, double b, double c) {
      seite1= a;
      seite2= b;
      seite3= c;
   }

/** Erzeugen eines gleichseitigen Dreiecks */
   public Dreieck(double a) {
      /* Hier die Implementierung eintragen */
   }// Ende Konstruktor
}// Ende der Klasse

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 10.: Aufruf von Konstruktoren der gleichen Klasse

Das Schlüsselwort this.

javafrage Wed, 09/04/2013 - 09:44

12. Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

12. Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

Beim Implementieren von Konstruktoren müssen eventuell andere Konstruktoren aufgerufen werden. Hierzu gibt es zwei Schlüsselwörter. Nennen Sie die Schlüsselwörter und beschreiben Sie ihre Verwendungszwecke in diesem Kontext.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 11: Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

public class Dreieck {
   double seite1;
   double seite2;
   double seite3;
   /** Erzeugen eines Dreiecks mit drei unterschiedlichen Seiten
   */
   public Dreieck (double a, double b, double c) {
      seite1= a;
      seite2= b;
      seite3= c;
   }

   /** Erzeugen eines gleichseitigen Dreiecks */
   public Dreieck(double a) {
      this (a,a,a);
   }// Ende Konstruktor
}// Ende der Klasse
javafrage Sun, 08/16/2015 - 11:23

13. Instanzvariablen und Klassenvariablen

13. Instanzvariablen und Klassenvariablen

Wie unterscheiden sich die Lebensdauer von Instanzvariablen und Klassenvariablen (Schlüsselwort static)?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 12: Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

  1. this: Erlaubt den Aufruf anderer Konstruktoren der gleichen Klasse
  2. super: Erlaubt den Aufruf von Konstruktoren der Oberklasse

Antwort zu Frage 13: Instanzvariablen und Klassenvariablen

Klassenvariablen sind über die gesamte Lebensdauer der Klasse definiert
Instanzvariablen sind von der Lebensdauer der zugehörigen Objekte(Instanzen) abhängig.

javafrage Fri, 12/30/2011 - 15:17

Anonymous (not verified)

Sat, 12/09/2017 - 13:43

"Sie werden mit Nullwerten belegt." stimmt das so?

lokale Variablen müssen doch normalerweise initialisiert werden, da sie keinen default Wert erhalten?

Habe es in eclipse ausprobiert, der Compiler meckert, wenn ich lokale Variablen nicht initialisere.

Vielen Dank

Viele Grüße

Fragen zu Paketen

Fragen zu Paketen

Fragen zu Paketen in anderen Kategorien:

javafrage Thu, 11/29/2018 - 17:19

1. Pakete und Sichtbarkeit von Klassen und Methoden

1. Pakete und Sichtbarkeit von Klassen und Methoden

Die unten aufgeführten Klassen befinden sich in unterschiedlichen Paketen.

  • Fügen Sie in die Klassen des Pakets Paket1 die minimal benötigten Modifizierer ein, die für das Paket Paket2 und das Paket Paket3 benötigt werden
  • Fügen Sie im Quellcode der Klassen KlasseAC und KlasseABD alle benötigten Befehle zur Benutzung der Klassen im Paket Paket1 ein.

Der Befehl String s = aa.print(); in der Klasse KlasseABD ist auch trotz korrekter Import-kommandos nicht übersetzbar. Änderen Sie einen der gegebenen Methoden-modifizierer so, dass das Kommando übersetzbar wird. Ändern Sie keine Modfizierer von Klassen oder Paketzugehörigkeiten! 

Fügen Sie alle Änderungen direkt im Quellcode ein.

Datei: KlasseA.java:
package Paket1;
class KlasseA {
protected String print()
{return "KlasseA";} }

Datei KlasseAA.java:

package Paket1;
class KlasseAA extends KlasseA{  }

Datei KlasseAB.java:

package Paket1;
class KlasseAB extends KlasseA{  }
Lage der Klassen in den Paketen
Datei KlasseAC.java:
package Paket2;
class KlasseAC extends KlasseA { }
Datei Klasse KlasseABD.java:
package Paket3;
  
class KlasseABD extends KlasseAB{
KlasseA myRef;
public void test() {
KlasseAB aa = new KlasseAB();
String s = aa.print(); } }

 

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 7 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Fri, 10/19/2012 - 10:35

Anonymous (not verified)

Sun, 12/11/2016 - 18:34

Laut der Oracle Java Documentation überschreibt eine Methode einer Unterklasse die Methode einer Oberklasse, wenn
a) sie die gleiche Signatur (Name und Parameterliste) hat,
b) sie den gleichen Rückgabetyp hat,
c) die überschriebene Methode nicht statisch ist ("hiding"),
d) die Zugriffsmodifikatoren der Methode der Unterklasse nicht beschränkender als die der Oberklasse sind.

Quelle: "Overriding and Hiding Methods", Oracle Java Documentation

2. Pakete und Schutz von Variablen

2. Pakete und Schutz von Variablen

Ergänzen Sie die folgenden Pakete mit den notwendigen Importkommandos:

Das Paket Paket1 ist gegeben mit der Klasse Klasse1a.

Das Paket Paket2 ist gegeben mit den Klassen Klasse2a und Klasse2b.

  • Fügen Sie in der Klasse Klasse1a genau einen expliziten Importbefehl ein, der Ihnen erlaubt alle Klassen des Paket2 zu verwenden.
  • Fügen Sie in der Klasse Klasse2a einen expliziten Importbefehle ein, der Ihnen nur die Benutzung der Klasses1a erlaubt.
  • Fügen Sie in der Klasse Klasse2b einen impliziten Import ein, der Ihnen nur erlaubt die Klasse Klasse1a im Attribut v1 zu verwenden.
  • Fügen Sie in der Klasse2a einen Modifizierer ein, der es erlaubt, das Attribut a in der Klasse Klasse1a zu verwenden. Die geschieht in der Methode test() Fügen Sie alle nötigen Befehle direkt im Quellcode ein.

Klasse1a.java:

package Paket1;


public class Klasse1a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;

   void test(Klasse2a obj) {
      obj.a = 17;
   }
}

Klasse2a.java

package Paket2;


 class Klasse2a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;
          int a;
}

Klasse2b.java

package Paket2;
public class Klasse2b {
           Klasse1a v1;
           Klasse2a v2;
           Klasse2b v3;  

}
Niveau 1
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1 : Pakete und Sichtbarkeit von Klassen und Methoden

Die notwendigen Änderungen sind fett gedruckt. Bzw. mit horizontaler Linie durchgestrichen.

Datei: KlasseA.java:
package Paket1;
public class KlasseA {
public protected String print()
{return "KlasseA";} }

Datei KlasseAA.java:

package Paket1;
class KlasseAA extends KlasseA{  }

Datei KlasseAB.java:

package Paket1;
public class KlasseAB extends KlasseA{  }
Lage der Klassen in den Paketen
Datei KlasseAC.java:
package Paket2;
import Paket1.KlasseA; class KlasseAC extends KlasseA { }
Datei Klasse KlasseABD.java:
package Paket3;
import Paket1.KlasseAB;
import Paket1.KlasseA;
  
class KlasseABD extends KlasseAB{
KlasseA myRef;
public void test() {
KlasseAB aa = new KlasseAB();
String s = aa.print(); } }
javafrage Thu, 09/11/2014 - 17:06

Anonymous (not verified)

Mon, 12/15/2014 - 14:24

Die Antwort für die 4. Teilaufgabe steht schon im Quellcode der Frage.

Danke für den Kommentar. Der Fehler wurde korrigiert. Ich musste leider im Kommentar die korrekt genannte Lösung löschen. Die Spannung auf dieser Seite wäre sonst weg. :-)

Anonymous (not verified)

Tue, 12/16/2014 - 10:49

Zu Punkt 4 der Aufgabe: "Fügen Sie in der Klasse2a einen Modifizierer ein, der es erlaubt, das Attribut a in der Klasse Klasse1a zu verwenden. Die geschieht in der Methode test() Fügen Sie alle nötigen Befehle direkt im Quellcode ein."
Im Quellcode in der Aufgabe ist das Attribut bereits public oder war danach nicht gefragt? Ich erkenne hier keinen Unterschied zur Musterlösung.

javafrage

Tue, 12/16/2014 - 14:43

In reply to by Anonymous (not verified)

Oops.
Copy und paste Fehler. Wurde korrigiert. Danke!

Anonymous (not verified)

Tue, 11/24/2015 - 18:22

In reply to by javafrage

Falls ich hier etwas nicht komplett missverstehe, ist die Lösung der 4. Teilaufgabe weiterhin bereits vorgegeben: "public int a;"

Außerdem: Nach dem Skript dachte ich, dass die Lösung der erste Teilaufgabe eigentlich "import Paket2.*;" sein müsste (expliziter Import aller Klasse aus Paket2).
In der Lösung heißt es aber nur "import Paket2;" ohne Stern.

Wo ist mein Denkfehler?
Danke

Stefan Schneider

Wed, 11/25/2015 - 09:26

In reply to by Anonymous (not verified)

Gut beobachtet. Hier wurde versehentlich die Lösung mit in die Aufgabenstellung kopiert. Wurde behoben. Danke.

3. Verschiedene Arten der Importdeklaration

3. Verschiedene Arten der Importdeklaration

Java verfügt über zwei Arten Klassen anderer Pakete zu importieren. Nennen Sie die beiden Importverfahren und geben Sie eine Begründung wann der Entwickler welches Verfahren anwenden sollte.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2.: Pakete und Schutz von Variablen

Klasse1a.java:

package Paket1;

import Paket2.*; 
public class Klasse1a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;

   void test(Klasse2a obj) {
      obj.a = 17;
   }
}

Klasse2a.java

package Paket2;

import Paket1.Klasse1a;

public class Klasse2a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;
   public int a;
}

Klasse2b.java

package Paket2;
public class Klasse2b {
    Paket1.Klasse1a v1;
           Klasse2a v2;
           Klasse2b v3;  

}

 

javafrage Sun, 08/16/2015 - 11:53

Stimmt. Diese Seite hatte ich falsch eingehängt. Das Problem sollte jetzt behoben sein.

4. Klassen importieren ohne Schlüsselwort

4. Klassen importieren ohne Schlüsselwort

Bei welchem der beiden Importverfahren benötigt man kein Schlüsselwort und warum?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Verschiedene Arten der Importdeklaration

  1. Expliziter Import: Zu importierende Klassen werden am Anfang einer Klasse importiert. Die importierten Klassennamen können dann ohne das vorangestellte Paket benutzt werden. Dies ist nützlich wenn man die Klassen an mehreren Stellen verwendet. Es ist weniger Schreibarbeit nötig.
  2. Impliziter Import: Die Klasse wird mit ihrem Paket vollständig bei der Benutzung genannt. Dies ist weniger Schreibarbeit wenn man die zu importierende Klasse nur einmal benutzen muss. Ein impliziter Import kann auch nötig sein falls zwei Klassen mit dem gleichen Namen aus verschiedenen Paketen benutzt werden müssen. Man kann so beschreiben welche der beiden Klassen benutzt werden soll.
javafrage Sun, 08/16/2015 - 15:06

5. Pakete, Importdeklarationen

5. Pakete, Importdeklarationen

Die Klasse Strecke aus dem Paket Nahe (Datei 3) soll die beiden Referenzvariablen anfang und ende vom Typ Punkt verwenden. Die beiden Referenzvariablen anfang und ende sollen aber die Implementierung eines Punktes aus dem Paket Entfernt (Datei 1) verwenden und nicht die Implementierung aus dem gleichen Paket (Datei 2).

Die genaue Typdeklaration der beiden Variablen anfang und ende fehlt in Datei 3. Fügen Sie die korrekte Typbezeichnung ein.

Es gibt zwei unterschiedliche Möglichkeiten den Import der Klasse Entfernt.Punkt in der Klasse Nahe.Strecke (Datei 3) zu deklarieren.
Fügen Sie in den unten aufgeführten Quellcode die beiden Möglichkeiten des Imports in Datei 3 ein:

Importmöglichkeit 1 Importmöglichkeit 2
Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 4: Klassen importieren ohne Schlüsselwort

Beim impliziten Import. Man gibt bei der Benennung des Typs alle Pakete mit an. Bespiel:

 

Paket1.Person p = new Paket1.Person();
javafrage Sat, 02/25/2012 - 11:57

Anonymous (not verified)

Mon, 04/12/2021 - 21:42

Fehlt hier in der letzten Zeile nicht ein Name für das neue Objekt? Wie referenzieren wir sonst unser Paket1.Person Objekt?

Antwort zu Frage 5.

Antwort zu Frage 5.

Erstmal nur eine Antwort

Frage 5: Pakete und Importdeklarationen

Importmöglichkeit 1 Importmöglichkeit 2
Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;
import Entfernt;
            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Entfernt.Punkt anfang;
Entfernt.Punkt ende;
}

javafrage Mon, 11/07/2016 - 11:28

Fragen zu Referenzen

Fragen zu Referenzen

Weitere Fragen aus anderen Bereichen zu diesem Thema:

javafrage Sat, 11/24/2018 - 12:57

1. Dereferenzieren von Objekten

1. Dereferenzieren von Objekten

Warum soll man Objekte dereferenzieren von denen man sicher ist, dass man sie nicht mehr benötigt. Dereferenzieren bedeutet die Referenzvariable mit einem null Wert zu belegen?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Fri, 12/30/2011 - 15:20

2. Referenzieren-Dereferenzieren

2. Referenzieren-Dereferenzieren
public class Person {
   public Person vater;
   public Person mutter;

   public static void main (String[] args ) {
      Person p1 = new Person();
      Person p2 = new Person();
      p1.vater = p2;
      p2 = null;
      // Zeitpunkt 1
     execute(p1);
     // Zeitpunkt 3
   } // Ende main

   public static void execute(Person p) {
      Person[] persFeld = new Person[2];
      persFeld[1] = p;
      persFeld[0] = new Person();
      persFeld[0].vater = new Person();
      persFeld[0].mutter = new Person();
      // Zeitpunkt 2
   } // Ende execute()
} // Ende Klasse Person

Zum Zeitpunkt 1 ergibt sich das folgende Modell für den Stapel (Stack) und den Objekt-Heap:

Heapdarstellung mit Javaobjekten

  • Aufgabe 1: Tragen Sie im Diagramm die zum Zeitpunkt 2 angelegten Objekte auf Heap und Stack ein. Nutzen Sie bitte den Diagrammstil wie vorgegeben.
  • Aufgabe 2: Markieren Sie das Objektmodell zum Zeitpunkt 3 im gleichen Diagramm:
    • Markieren Sie alle nicht erreichbaren Objekte mit der Bemerkung: „nicht erreichbar“.  Diese Objekte sind Kandidaten zum Löschen durch den „Garbagecollector“,

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6+6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Dereferenzieren von Objekten

Durch das explizite Dereferenzieren kann man „Memory leaks“ vorbeugen. Die dereferenzierten Objekte können dann wahrscheinlicher vom Garbage-collector gelöscht werden

Antwort zu Frage 2: Referenzieren-Dereferenzieren

public class Person {
   public Person vater;
   public Person mutter;

   public static void main (String[] args ) {
      Person p1 = new Person();
      Person p2 = new Person();
      p1.vater = p2;
      p2 = null;
      // Zeitpunkt 1
      execute(p1);
      // Zeitpunkt 3
   } // Ende main

   public static void execute(Person p) {
      Person[] persFeld = new Person[2];
      persFeld[1] = p;
      persFeld[0] = new Person();
      persFeld[0].vater = new Person();
      persFeld[0].mutter = new Person();
      // Zeitpunkt 2
   } // Ende aufrufen()
} // Ende Klasse Person

Zum Zeitpunkt 3 ergibt sich das folgende Modell für den Stapel (Stack) und den Objekt-Heap:

Heapdarstellung mit Javaobjekten

javafrage Thu, 09/05/2013 - 08:58

Fragen zu Feldern

Fragen zu Feldern javafrage Sat, 11/24/2018 - 13:52

1. Felder, Schleifen, Referenzen

1. Felder, Schleifen, Referenzen

Schreiben Sie eine Methode welche alle Werte eines Felds verdreifacht. Schreiben Sie den Quellcode in den freien Platz der vorgegebenen Methode dreifach(int[] a) der Klasse Feld1.

  • Verdreifachen Sie alle Werte des Feldes a welches als Eingabeparameter übergeben wird
  • Nicht notwendig:
    • Überprüfung auf Überlauf des Wertebereichs von int der einzelnen Feldelemente
    • Typprüfungen für a (a sei eine Nullreferenz oder ein Feld von int)
  • Für volle Punktzahl notwendig:
    • Prüfen, dass die übergebene Variable a nicht eine Nullreferenz ist
    • Verdreifachen aller Werte eines beliebig langen Feldes a
    • Die Feldgrenzen sollen nicht unter- oder überlaufen werden

Gegeben ist das folgende Javaprogramm:

public class Feld1 {
   public static void dreifach(int[] a) {
      // Hier Lösung einfügen
  } // Ende der Methode. Kein Rückgabewert notwendig
} // Ende der Klasse Feld1
Niveau 1
Schwierigkeitsgrad mittel
Zeit 9 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Wed, 10/24/2012 - 18:48

2. Parameterübergaben und Rückgaben von Werten

2. Parameterübergaben und Rückgaben von Werten

Bei der Methode malDrei(int b) geht das Ergebnis nach dem Verlassen des Methodenrumpf verloren.
Warum geht dieses Ergebnis verloren, aber das Ergebnis der Methode dreifach(int[] a) kann noch vom Aufrufer nach Beenden der Methode verwendet werden?

Geben Sie eine kurze Erklärung der beiden unterschiedlichen Situationen.

public class Feld1 {
   public static void dreifach(int[] a) {
      if (a != null) {
for (int i = 0; i<a.length; i++) {
a[i] = 3 * a[i];
}
} } // Ende der Methode. Kein Rückgabewert notwendig public static void malDrei(int b) {int c=3*b;} } // Ende der Klasse Feld1
Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1 : Felder, Schleifen, Referenzen

public class Feld1 {
   public static void dreifach(int[] a) {
      if (a != null) {
for (int i = 0; i<a.length; i++) {
a[i] = 3 * a[i];
}
}
} // Ende der Methode. Kein Rückgabewert notwendig } // Ende der Klasse Feld1
javafrage Thu, 10/25/2012 - 14:21

3. Implementieren eines Felds (Array)

3. Implementieren eines Felds (Array)

Vervollständigen Sie die weiter unten aufgeführte Vorlage einer Klasse Feld.

1. Deklarieren sie ein öffentliches Attribut der Klasse Feld mit

  • dem Namen f
  • dem Typ eines Feldes von 32 Bit Ganzzahlen
  • initialisieren Sie das Attribut mit einer aufzählenden Belegung für 10 Feldelemente
  • belegen Sie die Position 0 des Feldes mit dem Wert 9, die Position 1 mit dem Wert 8, die Position 2 mit dem Wert 7 usw.

2. Implementieren Sie eine Methode mit dem Namen verdoppeln

  • die Methode verdoppeln soll nur von Unterklassen aufgerufen werden können (1 Minute)
  • die Methode hat keine Eingabe oder Ausgabeparameter (1 Minute)
  • alle Elemente des Feldes f sollen im Wert verdoppelt werden (2 Minuten)
  • die Methode soll für beliebig lange Felder funktionieren (1 Minute)
  • wählen Sie eine Schleife und die benötigten Zählvariablen (2 Minuten)
public class Feld {
  // Ab hier implementieren

}// Ende der Klasse Feld

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3+7 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2 : Parameterübergaben und Rückgaben von Werten

Bei der Methode dreifach() wird eine Referenz auf ein Feld int[], welches auf dem Heap liegt, übergeben. Das Feld ist solange benutzbar, solange es Referenzen darauf gibt.
Die Methode malDrei() hat einen Basistypen int als Übergabeparameter. Er wird beim Aufruf kopiert und ist nur innerhalb des Methodenblocks gültig. Die Variable b wird am Ende des Methodenblocks gelöscht und ist nicht mehr benutzbar. 

javafrage Fri, 09/06/2013 - 08:41

4. Felder aufzählend initialisieren und benutzen

4. Felder aufzählend initialisieren und benutzen

Vervollständigen Sie die weiter unten aufgeführte Vorlage einer Klasse Prim.

Deklarieren sie ein privates, statisches Attribut der Klasse Prim zur Verwaltung der ersten fünf Primzahlen in aufsteigender Folge. (2 Minuten)
2 ist die erste Primzahl!

  • Initialisieren Sie das Attribut mit dem Feld mit einer aufzählenden Belegung (1 Minute)
  • das Feld soll nicht veränderbar sein (1Minute)
  • an der ersten Stelle soll die 2 im Feld gespeichert sein
  • Implementieren Sie den Rumpf der Methode auslesen()
    • sie liest die n'te Primzahl aus dem Feld aus.
    • Beim Aufruf von 1 gibt erste Primzahl aus.
    • Beim Aufruf von 2 die zweite usw.
    • Sie müssen nicht die Feldgrenzen überprüfen.
    public class Prim {
       // Hier das Feldattribut deklarieren
    
   
    }// Ende der Klasse Prim
 
Niveau 1
Schwierigkeitsgrad mittel
Zeit 7 Minuten (4+3)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3 : Implementieren eines Felds (Array)

public class Feld {
  // Ab hier implementieren
  public int[] f = {9,8,7,6,5,4,3,2,1,0};
   
  protected void verdoppeln() {
     for (int i=0;i<f.length;i++) {
         f[i]=2*f[i];
     }
   } 

}// Ende der Klasse Feld

javafrage Sun, 09/21/2014 - 15:46

Anonymous (not verified)

Wed, 12/17/2014 - 16:35

if (MAX_PASSAGIERE Ist das nicht falsch? Eigentlich müsste es doch "MaxPassagiere größer gleich Passagiere + n" sein oder?

Sarah, Fabien, Nike, Christian, Nurbanu, Stefanie, Robin

Stefan Schneider

Wed, 12/17/2014 - 19:49

In reply to by Anonymous (not verified)

Wurde verbessert. Danke.

5. Zweidimensionales Feld implementieren

5. Zweidimensionales Feld implementieren

Es soll eine Methode

public static int anzahlZellen(int[][] meinFeld) 

implementiert werden. Diese Methode zählt die Zellen eines zweidimensionalen Felds.

 

  1. Welche Sonderfälle können bei einem Zeiger wie meinFeld bei zweidimensionalen Feldern auftreten? (2 Min.)
  2. Skizzieren Sie textuell was in der oben genannten Methode programmiert werden muss. ( 4 Min.)
Niveau 1
Schwierigkeitsgrad mittel
Zeit 2+4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4 : Felder aufzählend initialisieren und benutzen

public class Prim {
    // Hier das Feldattribut deklarieren
    private static final int[] feld = {2,3,5,7,11}; 
    public static int auslesen (int pos) {
       return feld[pos-1];
    }
}// Ende der Klasse Prim
javafrage Sun, 08/16/2015 - 15:56

6. Aufzählendes Initialisieren von Feldern

6. Aufzählendes Initialisieren von Feldern

Vervollständigen Sie den unten aufgeführten Code in dem Sie das gegebene Feld von Zweierpotenzen mit den ersten vier Zweierpotenzen (1, 2, 4, 8) aufzählend initialisieren.

int[] zweierpotenzen
Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5.: Zweidimensionales Feld implementieren

Sonderfälle

  • Der Zeiger ist leer (null)
  • Das Feld ist kürzer als gedacht oder leer.

Vorgehen

  • Prüfe ob ein Nullzeiger vorliegt. Gib 0 als Ergebnis aus falls ein Nullzeiger vorliegt und beende das Programm
  • Bestimme die Länge des Feldes der ersten Dimension
  • Führe die folgenden Operationen für alle Feldelemente der ersten Dimension durch.
    • Die einzelnen Elemente der ersten Dimension werden „zweite Dimension“ genannt:
    • Ein Zeiger der zweiten Dimension zeigt auf null
      • Ja: Setze die Länge des Feldes auf Null
      • Nein: Bestimme die Länge der Felder der zweiten Dimension
    • Addiere das Ergebnis der Felder der zweiten Dimension zum Gesamtergebnis
  • Gibt das Gesamtergebnis zurück
javafrage Sun, 08/16/2015 - 18:23

7. Speicherbereich für Felder

7. Speicherbereich für Felder

In welchem Speicherbereich werden Felder verwaltet (1 Min.) und warum (2 Min.)?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6 : Aufzählendes Initialisieren von Feldern

int[] zweierpotenzen = {1,2,4,8};
javafrage Sun, 08/16/2015 - 18:29

8. Felder (Implementieren)

8. Felder (Implementieren)

Schreiben Sie eine öffentliche Klassenmethode erzeugeFibonacciFeld, der als Parameter eine Ganzzahl größer 2 übergeben wird.

Diese Ganzzahl legt fest, wie groß das Ganzzahlen-Feld sein soll, das in der Methode zuerst eingerichtet und dann mit den Werten der Fibonacci-Folge gefüllt werden soll. Bei einem Übergabeparameter n soll das Feld von der Position 0 bis n mit den Elementen der Fibonaccifolge gefüllt sein

Definition der Fibonacci-Folge

Jeder Wert der Fibonacci-Folge besteht aus der Summe der beiden vorgehenden Werte.Für die ersten beiden Zahlen sind die Werte 0 und 1 vorgegeben. Das bedeutet:

  • f0 = 0 ;
  • f1 = 1;
  • f2 = 1;
  • f3 = 2;
  • f4 = 3;
  • f5 = 5,

oder als Formel
fn = fn-1 + fn-2  für n>= 2

Hinweis für die Methode:

  • Es wird kein Wert zurückgeben;
  • das Fibonacci-Feld wird lokal in der Methode deklariert;
  • Es findet keine Überprüfung auf Unterlauf des Parameter(<2) statt; Es findet keine Überprüfung auf potentiellen Überlauf des Wertebereichs bei der Berechnung der Fibonacciwerte statt.
Niveau 1
Schwierigkeitsgrad mittel
Zeit

12 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7 : Speicherbereich von Feldern

Felder werden im Freispeicher (Heap) angelegt, da Sie unterschiedlich groß sein können.

javafrage Sat, 12/31/2011 - 14:12

9. Felder in Parameterlisten

9. Felder in Parameterlisten

Implementieren sie den Kopf einer Methode die beliebig viele Namen Ihrer Haustiere annehmen kann. Vervollständigen Sie den Methodenkopf. Drucken Sie in der Methode alle Namen der Tiere auf die Konsole:

public static void meineLieblinge ( /* ? */)
{ // Hier implementieren

}
Niveau 1
Schwierigkeitsgrad mittel
Zeit

5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8: Felder (Implementieren)

public void erzeugeFibonacciFeld(int k) {
   int [] fib=new int[k+1];
   fib[0] = 0;
   fib[1] = 1;
   for (int i=2; i<= k; i++)
      fib[i] = fib[i-1]+fib[i-2];
}

Antwort zu Frage 9: Felder in Parameterlisten

public static void meineTiere (String … tiernamen   )
{ // Hier implementieren
   for ( String t : tierNamen) System.out.println("Haustier: " +t);
}
javafrage Tue, 05/11/2021 - 10:37

Fragen zur Vererbung

Fragen zur Vererbung

Weitere Themen zu diesem Thema aus anderen Bereichen:

javafrage Sun, 11/25/2018 - 16:28

1. Überschriebene Methoden

1. Überschriebene Methoden

Java kennt überladene sowie überschriebene Methoden.  Woran erkennt man überschriebene Methoden? 

  • Geben Sie eine kurze Erklärung
  • Geben Sie ein Beispiel zweier überschriebener Methoden. Wichtig:
    • benötigte Klasse bzw. Klassen
    • benötigte Methoden (Name, Signatur etc). Methodenrümpfe sind nicht wichtig. Kürzen Sie sie mit {…} ab 
Niveau 1
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Fri, 10/19/2012 - 10:05

2. Vererbung in Javaklassen

2. Vererbung in Javaklassen

 

  1. Welche Bestandteile einer Klasse werden in Java vererbt?
  2. Welche Bestandteile von Klassen werden nicht vererbt?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1 : Überschriebene Methoden

Überschriebene Methoden sind Methoden mit gleichem Namen und gleicher Eingabeparameterliste in einer Unterklasse und der Oberklasse.

Ein Beispiel:

public class Oberklasse {

   public void drucken() {...}

}

public class Unterklasse extends Oberklasse {

   public void drucken() {...}

}
javafrage Sat, 09/07/2013 - 12:33

3. Implementieren einer abgeleiteten Klasse

3. Implementieren einer abgeleiteten Klasse

Vervollständigen die Klasse Punkt3D derart, dass

  • sie aus der Klasse Punkt2D abgeleitet wird und die beiden ersten Koordinaten (x,y) von Punkt2D nutzt (1 Minute)
  • sie ein privates Attribut für eine dritte Koordinate besitzt (1 Minute)
  • sie einen Konstruktor besitzt der alle drei Koordinaten mit initialen Wunschwerten belegt(3 Minuten)
  • eine öffentliche Methode drucken() besitzt die eine Zeichenkette mit dem Wert aller drei Koordinaten erzeugt (3 Minuten)
public class Punkt2D {
   private double x;
   private double y;

   public Punkt2D(double xx, double yy) {
      x = xx;
      y = yy;
   }
   /**
   * Diese Methode erzeugt eine Zeichenkette der x
   * und y Koordinate
   * @return Zeichenketten mit Belegung
   */
   public String drucken() {
      String s = "x:"+ x + " y: " +y;
      return s;
   }
}// Ende der Klase Punkt2D

public class Punkt3D extends Punkt2D{
   // Hier implementieren
}// Ende Klasse Punkt3D

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2 : Vererbung in Javaklassen

  1. Welche Bestandteile einer Klasse werden in Java vererbt?
    • Public, protected Attribute und Methoden
  2.  Welche Bestandteile von Klassen werden nicht vererbt?
    • Private Attribute und Methoden, Konstruktoren
javafrage Sat, 09/07/2013 - 12:49

4. Modifizierer (Modifier): Warum darf eine Klasse nicht "abstract" und "final" gleichzeitig sein?

4. Modifizierer (Modifier): Warum darf eine Klasse nicht "abstract" und "final" gleichzeitig sein?

Die Antwort ist auf der Folgeseite (URL rechts unten) zufinden.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 3 : Implementieren einer abgeleiteten Klasse

public class Punkt2D {
   private double x;
   private double y;

   public Punkt2D(double xx, double yy) {
      x = xx;
      y = yy;
   }
   /**
   * Diese Methode erzeugt eine Zeichenkette der x
   * und y Koordinate
   * @return Zeichenketten mit Belegung
   */
   public String drucken() {
      String s = "x:"+ x + " y: " +y;
      return s;
   }
}// Ende der Klase Punkt2D

public class Punkt3D extends Punkt2D{
   private double z;
   public Punkt3D(double xx, double yy, double zz) {
      super(xx,yy);
z = zz;
}
/** * Diese Methode erzeugt eine Zeichenkette der x,y und Z * Koordinate * @return Zeichenketten mit Belegung */ public String drucken() { String s = super.drucken() + "z:" +z; return s; } }// Ende Klasse Punkt3D

Antwort zu Frage 4: Abstrakte und finale Klassen

Die Frage finden Sie auf der vorgehenden Seite (URL links unten klicken)

  • Abstrakte Klassen dürfen nicht instanziiert werden. Es können nur Instanzen von abgeleiteten Klassen gebildet werden werden.
  • Finale Klassen dürfen nicht abgeleitet werden.

Eine finale, abstrakte Klasse kann weder instanziiert noch spezialisiert werden. Man kann sie nicht benutzen.

javafrage Fri, 12/23/2011 - 13:58

Anonymous (not verified)

Wed, 12/17/2014 - 20:30

Muss die Frage hier nicht heißen: 1.2 Modifizierer (Modifier): Warum darf eine KLASSE nicht "abstract" und "final" gleichzeitig sein?

Ansonsten past die Antwort nicht ganz?

Fragen zum Polymorphismus

Fragen zum Polymorphismus

Weitere Fragen zu diesem Thema aus anderen Bereichen:

 

javafrage Sun, 11/25/2018 - 16:43

1. Polymorphismus (Zuweisungen, Methodenaufrufe)

1. Polymorphismus (Zuweisungen, Methodenaufrufe)

Die main() Methode der Klasse Punkt3D arbeitet mit Objekten der Klassen Punkt2D und Punkt3D.

public class Punkt2D {
   private double x;
   private double y;

   public Punkt2D(double xx, double yy) {
      x = xx;
      y = yy;
   }
   /**
   * Diese Methode erzeugt eine Zeichenkette der x
   * und y Koordinate
   * @return Zeichenketten mit Belegung 
   */
   public String drucken() {
      String s = "x:"+ x + " y: " +y;
      return s;
   }
}// Ende der Klase Punkt2D

public class Punkt3D extends Punkt2D{
   private double z;

   public Punkt3D(double xx, double yy, double zz) {
      super(xx,yy);
      z = zz;
   }

   /**
   * Diese Methode erzeugt eine Zeichenkette der x,y und Z
   * Koordinate
   * @return Zeichenketten mit Belegung
   */
   public String drucken() {
      String s = super.drucken() + "z:" +z;
      return s;
   }

   public static void main(String[] args) {
Punkt2D[] feld= new Punkt2D[2];
feld[0] = new Punkt2D(11.1,22.2);
feld[1] = new Punkt3D(11.1,22.2,33.3); Punkt2D p2d0 = feld[0]; Punkt2D p2d1 = feld[1]; // Analyse der Druckenmethode System.out.println(p2d0.drucken()); // Was wird ausgegeben? System.out.println(p2d1.drucken()); // Was wird ausgegeben? // Typkonversionen. Punkt3D p3da = p2d0; Punkt3D p3db = p2d1; Punkt3D p3dc = p3db; Punkt2D p2d3 = p3db; } }// Ende Klasse Punkt3D
  1. Was schreibt dieses Programm mit den beiden Aufrufen von System.out.println() auf die Konsole? (2 Minuten)
  2. Warum werden hier zwei unterschiedliche Methoden aufgerufen, obwohl der Variablentyp bei beiden Variablen Punkt2D ist? Nennen Sie den Fachbegriff und erklären Sie ihn kurz. (4 Minuten)
  3. Analysieren Sie die Zuweisungen nach dem Kommentar „Typkonversionen“ in der Methode main()
    • Fügen Sie Typkonversionen an den Stellen ein, an der die Zuweisungen nicht
      sicher sind und vom Übersetzer javac als Syntaxfehler beanstandet werden. (2 Minuten)
    • Obwohl alle Zuweisungen mit den entsprechenden Typkonversionen syntaktisch richtig sind wird es zur Ausführungszeit Fehler geben. Kommentieren Sie diese Zeilen mit „//“ aus. (1 Minute)
    • Eine der Zuweisungen hat eine sichere Typkonversion die ohne explizite Typkonversion (cast) erlaubt ist. Markieren Sie diese Zeile mit „sichere Typkonversion“ (1 Minute)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2+4+4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1 : Implementieren einer abgeleiteten Klasse

1. Was schreibt dieses Programm mit den beiden Aufrufen von System.out.println() auf die Konsole?

  • x:11.1 y: 22.2
  • x:11.1 y: 22.2 z:33.3

2. Warum werden hier zwei unterschiedliche Methoden aufgerufen, obwohl der  Variablentyp bei beiden Variablen Punkt2D ist? Nennen Sie den Fachbegriff und erklären Sie ihn kurz:

  • Die Methode drucken der Klasse Punkt3D überschreibt die Methode der Oberklasse. Durch den Polymorphismus in Java wird die Methode automatisch die speziellste für das gegebene Objekt ausgewählt.

3. Quellcode mit eingefügten Antworten:

public class Punkt2D {
   private double x;
   private double y;

   public Punkt2D(double xx, double yy) {
      x = xx;
      y = yy;
   }
   /**
   * Diese Methode erzeugt eine Zeichenkette der x
   * und y Koordinate
   * @return Zeichenketten mit Belegung 
   */
   public String drucken() {
      String s = "x:"+ x + " y: " +y;
      return s;
   }
}// Ende der Klase Punkt2D

public class Punkt3D extends Punkt2D{
   private double z;

   public Punkt3D(double xx, double yy, double zz) {
      super(xx,yy);
      z = zz;
   }

   /**
   * Diese Methode erzeugt eine Zeichenkette der x,y und Z
   * Koordinate
   * @return Zeichenketten mit Belegung
   */
   public String drucken() {
      String s = super.drucken() + "z:" +z;
      return s;
   }

   public static void main(String[] args) {
      Punkt2D[] feld= new Punkt2D[2];
      feld[0] = new Punkt2D(11.1,22.2);
      feld[1] = new Punkt3D(11.1,22.2,33.3);
 
      Punkt2D p2d0 = feld[0];
      Punkt2D p2d1 = feld[1];
      // Analyse der Druckenmethode
      System.out.println(p2d0.drucken()); // Was wird ausgegeben?
      System.out.println(p2d1.drucken()); // Was wird ausgegeben?
 
      // Typkonversionen.
      //In der nächsten Zeile wurde ein Kommentar eingefügt
      //Punkt3D p3da = (Punkt3D) p2d0;
      Punkt3D p3db = (Punkt3D) p2d1;
      Punkt3D p3dc = p3db; // Sichere Zuweisung
      Punkt2D p2d3 = p3db; // Upcast -> Sichere Zuweisung
   }
}// Ende Klasse Punkt3D
javafrage Sun, 09/08/2013 - 11:14

Anonymous (not verified)

Thu, 04/08/2021 - 13:33

Hallo!
Der Lösungssatz für Aufgabe 2 hat einen Merkwürdigen Satzbau, was meinen sie mit diesem Satz?
Dank für ihre Antwort

Fragen zu Java Schnittstellen (Interfaces)

Fragen zu Java Schnittstellen (Interfaces) javafrage Mon, 03/20/2017 - 15:12

1 Abstrakte Klassen und Schnittstellen

1 Abstrakte Klassen und Schnittstellen

 Implementieren sie die notwendigen Methodenköpfe für die Klasse Unterklasse. Die Klasse Unterklasse hat die folgenden Eigenschaften:

  • Sie wird aus der Klasse Oberklasse abgeleitet
  • Sie implementiert die Schnittstelle(Interface) Vergleichbar

Vervollständigen Sie die Klasse Unterklasse mit den notwendigen Methoden um ein Objekt dieser Klasse erzeugen zu können.

Die Methodenrümpfe können mit {…} abgekürzt werden.

public abstract class Oberklasse {
   public abstract void drucken();
   public abstract boolean groesser(Object obj);
   public int status() {return 1;}
} //Ende der Klasse Oberklasse

public interface Vergleichbar {
   public boolean groesser(Object obj);
   public int zaehler();
} // Ende der Schnittstelle Vergleichbar

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten
javafrage Sun, 01/29/2012 - 11:07

2 Schnittstellen und Überschreiben von Methoden

2 Schnittstellen und Überschreiben von Methoden

Warum kann man in Java Schnittstellenmethoden (Interface-methoden) nicht überschreiben? Warum kann man nur Methoden einer Oberklasse überschreiben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 1: Abstrakte Klassen und Schnittstellen

public abstract class Oberklasse {
   public abstract void drucken();
   public abstract boolean groesser(Object obj);
   public int status() {return 1;}
} //Ende der Klasse Oberklasse

public interface Vergleichbar {
   public boolean groesser(Object obj);
   public int zaehler();
} // Ende der Schnittstelle Vergleichbar

public class Unterklasse extends Oberklasse implements Vergleichbar{   
public void drucken() {System.out.println("drucken");}
public boolean groesser(Object obj) {return true;}
public int zaehler() {return 0;} } // Ende der Klasse Unterklasse

 

javafrage Sun, 01/29/2012 - 11:15

Anonymous (not verified)

Sun, 06/19/2016 - 20:47

Warum kann man in Java Schnittstellenmethoden (Interface-methoden) nicht überschreiben?
[...]

3 Oberklassen und Schnittstellen in UML

3 Oberklassen und Schnittstellen in UML

Modellieren Sie die beiden Klassen Oberklasse, Unterklasse und die Schnittstelle Vergleichbar in UML. Modellieren Sie die Beziehung zwischen den beiden Klassen und der Schnittstelle. Die Methoden müssen nicht aufgeführt werden. Klassenname, Schnittstellenname und korrekte UML Pfeile sind ausreichend.

public abstract class Oberklasse {
   public abstract void drucken();
   public abstract boolean groesser(Object obj);
   public int status() {return 1;}
} //Ende der Klasse Oberklasse

public interface Vergleichbar {
   public boolean groesser(Object obj);
   public int zaehler();
} // Ende der Schnittstelle Vergleichbar

public class Unterklasse extends Oberklasse implements Vergleichbar{
   public void drucken() {System.out.println("drucken");}
   public boolean groesser(Object obj) {return true;}
   public int zaehler() {return 0;}
} // Ende der Klasse Unterklasse

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 2: Schnittstellen und Überschreiben von Methoden

Schnittstellen haben keine Implementierung. Ohne eine Implementierung kann man auch nicht die Methode überschreiben. Man kann sie nur implementieren.

 

javafrage Sun, 01/29/2012 - 21:39

4 Klasse zu gegebenen Schnittstellen implementieren

4 Klasse zu gegebenen Schnittstellen implementieren

Implementieren sie die notwendigen Methodenköpfe für die Klasse Schwimmauto. Die Klasse Schwimmauto hat die folgenden Eigenschaften:

  • Sie implementiert die Schnittstellen Kfz und Schiff
  • Sie implementiert einen Konstruktor der mit dem Parameter (int passagiere) die Anzahl der Passagiere erfassen kann.

Vervollständigen Sie die Klasse Schwimmauto

  • mit den notwendigen Methoden und Konstruktoren.
  • mit der Deklaration der benötigten Schnittstellen
  • bitte alle Methodenrümpfe mit {…} abkürzen (Sie sind hier nicht wichtig).
public interface Kfz {
   public int motorleistung();
   public String kennzeichen();
   public int anzahlRaeder();
} //Ende des Interface Auto

public interface Schiff {
   public int motorleistung();
   public int wasserVerdraengung();
} // Ende der Schnittstelle Schiff

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 7 Minuten

Antwort zu Frage 3: Oberklassen und Schnittstellen in UML

UML Diagramm

javafrage Sun, 05/06/2012 - 14:21

5 Schnittstellen und Konstruktoren

5 Schnittstellen und Konstruktoren

Warum wird bei Schnittstellen nie die Implementierung eines Konstruktors gefordert?

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 4: Klasse zu gegebenen Schnittstellen implementieren

public class Schwimmauto implements Schiff, Kfz {
   // Bitte Methoden hier eintragen
   public int motorleistung() {...}    
   public String kennzeichen(){...}    
   public int anzahlRaeder(){...} 
   public int wasserVerdraengung(){...}
   public Schwimmauto(int passagiere){...} // Der Konstruktor
} // Ende der Klasse Schwimmauto

 

javafrage Fri, 12/28/2012 - 20:22

6 Schnittstellen in UML beschreiben

6 Schnittstellen in UML beschreiben

Die Klassen Person und Supplier implementieren die Schnittstelle BankAccount. Zeichnen Sie ein UML Diagramm welches die die beiden Klassen, die Schnittstelle und deren Beziehung zeigt. Nutzen Sie den Diagrammtyp der die Schnittstelle BankAccount als Rechteck zeigt:

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 5: Konstruktoren und Schnittstellen

Schnittstellen können nicht instanziiert werden. Daher muss auch nichts initialisiert werden. Eine Implementierung kann nur den Konstruktor der Oberklasse aufrufen aber nicht den der implementierten Schnittstelle

javafrage Thu, 03/27/2014 - 08:31

7 Java Schnittstellen in alternativer UML Darstellung

7 Java Schnittstellen in alternativer UML Darstellung

Zeichnen Sie ein UML Diagramm für die Klasse Person welches die Schnittstellenbeziehung von oben in einer alternativen UML Notation zeigt.

UML Diagramm

Nutzen Sie die Notation, die man benutzt um auf die Schnittstelle
BankAccount als Schnittstelle zu referenzieren wenn man BankAccount nicht als
vollständiges Rechteck im Diagramm zeichnen möchte.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 6: Schnittstellen in UML beschreiben

UML Diagramm mit Java Schnittstellen

 

javafrage Sat, 08/08/2015 - 16:20

8 Implementieren einer Unterklasse mit einer Schnittstelle

8 Implementieren einer Unterklasse mit einer Schnittstelle

Implementieren sie die notwendigen Methodenköpfe für die Klasse Unterklasse.

Die Klasse Unterklasse hat die folgenden Eigenschaften:

  • Sie wird aus der Klasse Oberklasse abgeleitet
  • Sie implementiert die Schnittstelle(Interface) Vergleichbar

Vervollständigen Sie die Klasse Unterklasse mit den notwendigen Methoden um ein Objekt dieser Klasse erzeugen zu können. Die Methodenrümpfe können mit {…} abgekürzt werden.

public abstract class Oberklasse {
    public abstract void drucken();
    public abstract boolean groesser(Object obj);
    public int status() {return 1;}
} //Ende der Klasse Oberklasse

public interface Vergleichbar {
    public boolean groesser(Object obj);
    public int zaehler();
} // Ende der Schnittstelle Vergleichbar

public class Unterklasse extends Oberklasse implements Vergleichbar{
// Bitte Methoden hier eintragen
} // Ende der Klasse Unterklasse 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

 

Antwort zu Frage 7: Java Schnittstellen in alternativer UML Darstellung

Interfaces in Lollipop-Präsentation

Stop. Die Antwort zu Frage 8 finden Sie weiter unten!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 8: Implementieren einer Unterklasse mit einer Schnittstelle

public abstract class Oberklasse {
    public abstract void drucken();
    public abstract boolean groesser(Object obj);
    public int status() {return 1;}
} //Ende der Klasse Oberklasse

public interface Vergleichbar {
    public boolean groesser(Object obj);
    public int zaehler();
} // Ende der Schnittstelle Vergleichbar

public class Unterklasse extends Oberklasse implements Vergleichbar{
// Bitte Methoden hier eintragen    
    public void drucken() {System.out.println("drucken");}
    public boolean groesser(Object obj) {return true;}
    public int zaehler() {return 0;}
} // Ende der Klasse Unterklasse
javafrage Sat, 02/13/2016 - 19:02

Fragen zu Annahmen (Assertions)

Fragen zu Annahmen (Assertions) javafrage Mon, 03/20/2017 - 18:22

1 Assertions (Annahmen, Zusicherungen)

1 Assertions (Annahmen, Zusicherungen)

Die Klasse Annahme hat zwei Methoden verkettung() und alterInMonaten(). Die geforderten Randbedingungen sind textuell als Javakommentar in den beiden Methoden eingefügt. Fügen Sie bitte im Quellcode für jede Methode die notwendigen Assertions hinter den Kommentaren ein.

public class Annahme {

public static void main(String[] args) {
String s;
// Korrekte Aufrufe
s = verkettung("Liese", "Meitner");
int a = alterInMonaten(19, 2);
// Nicht korrekte Aufrufe.
// Sie sollen von Assertions gefangen werden
s = verkettung(null,"Curie");
a = alterInMonaten(250, 13);
}

public static String verkettung(String nachname, String vorname) {
// Es darf keine Nullreferenz
// als Vor- oder Nachname benutzt werden
// Assertions hier einfügen:
return (vorname + nachname);
} // Ende der Methode verkettung

public static int alterInMonaten(int alterJahre, int alterMonate) {
// Das Alter einer Person wird in seinem Alter in Jahren und den
// Monaten als Wert zwischen 1 und 12 übergeben.
// Das Alter muss zwischen 0 und 150 Jahren liegen.
// Die laufenden Monate müssen zwischen 1 und 12 liegen.
// Assertions hier einfügen:
return (alterJahre * 12 + alterMonate);
} // Ende der Methode alterInMonaten
} // Ende der Klasse

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten
javafrage Mon, 02/20/2012 - 08:47

2 Anwendung von Assertions

2 Anwendung von Assertions

In welchen Situationen soll ein Entwickler Assertions anstatt einer regulären Prüfung bei jedem Aufruf in einer Anwendung nutzen?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zur Frage 1: Assertions

public class Annahme {

public static void main(String[] args) {
String s;
// Korrekte Aufrufe
s = verkettung("Liese", "Meitner");
int a = alterInMonaten(19, 2);
// Nicht korrekte Aufrufe.
// Sie sollen von Assertions gefangen werden
s = verkettung(null,"Curie");
a = alterInMonaten(250, 13);
}

public static String verkettung(String nachname, String vorname) {
// Es darf keine Nullreferenz
// als Vor- oder Nachname benutzt werden
// Assertions hier einfügen:

assert ((nachname != null) && (vorname != null));


return (vorname + nachname);
} // Ende der Methode verkettung

public static int alterInMonaten(int alterJahre, int alterMonate) {
// Das Alter einer Person wird in seinem Alter in Jahren und den
// Monaten als Wert zwischen 1 und 12 übergeben.
// Das Alter muss zwischen 0 und 150 Jahren liegen.
// Die laufenden Monate müssen zwischen 1 und 12 liegen.
// Assertions hier einfügen:
assert ((alterJahre >= 0) &&
(alterJahre <= 150)
&&
(alterMonate > 0) &&
(alterMonate <= 12));

return (alterJahre * 12 + alterMonate);
} // Ende der Methode alterInMonaten
} // Ende der Klasse

javafrage Fri, 02/24/2012 - 18:07

3 Implementieren von Assertions (Annahmen)

3 Implementieren von Assertions (Annahmen)

Fügen Sie hinter den Kommentaren der drei Methoden Assertions (Annahmen) ein, die die Forderung in den Kommentaren erfüllen:

package Kurs2.Assertion;

public class Fragen1 {
public static void main (String[] args) {
int konto = 1000;
konto = kontobuchung(konto,-500);
String s = verkettung("Test",null);
int volumen;
volumen = paketvolumen (100, 50, 60);
volumen = paketvolumen (20, 20, -5);
}

public static int kontobuchung (int konto, int betrag) {
// Es darf kein negative Wert für betrag verwendet werden


return (konto - betrag);
}

public static String verkettung (String a, String b) {
// Weder die Übergabevariable a noch b dürfen null Referenzen sein


return (a + b);
}

public static int paketvolumen(int laenge, int breite, int hoehe) {
// Alle Paketmaße müssen positiv sein
// Die Summe von laenge, breite und hoehe darf 2000 nicht uebersteigen


return (laenge*breite*hoehe);
}
}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zur Frage 2: Verwendung von Assertions

Assertions haben im Normalfall keinen Performancenachteil. Da das Assertionchecking nur explizit eingeschaltet wird, muss man für die Assertions nicht unbedingt Qualititätssicherung und keine professionelle Behandlung des Sonderfalls durchführen. Daher sind typische Situationen

  • Die durchzuführende Prüfung würde sehr (,sehr ) oft durchgeführt und sollte "eigentlich" nie einen Fehlerfall anzeigen
  • Die durchzuführende Prüfung sollte nie einen Fehlerfall produzieren, da z.Bsp. aufrufende Methoden den Fehlerfall schon abfangen. Eine doppelte, reguläre Prüfung wäre im Normalbetrieb redundant. Bei einer zukünftigen Wiederverwendung Ihres Softwarepakets könnte es aber zu zu gänzlich anderen Aufrufabfolgen kommen.
  • Sie benötigen ledliglich eine Ausgabe zur Fehleranalyse eines Fehlers der nie vorkommen sollte. Sie möchten aber aus Kostengründen keine Ausnahme werfen. Das Werfen einer Ausnahme müsste dokumentiert werden. Es müsste getestet werden. Es müsste eventuell lokalisiert werden.
javafrage Thu, 01/10/2013 - 08:24

4 Assertions Einsatzbereiche

4 Assertions Einsatzbereiche

Nennen Sie zwei typische Bereiche in den es guter Stil ist, Java-Assertions zu verwenden.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2Minuten

 

Antwort zu Frage 3: Implementieren von Assertions (Annahmen, Zusagen)

package Kurs2.Assertion;

public class Fragen1 {

public static void main (String[] args) {
int konto = 1000;
konto = kontoBuchung(konto,-500);
String s = verkettung("Test",null);
int volumen;
volumen = paketvolumen (100, 50, 60);
volumen = paketvolumen (20, 20, -5);
}

public static int kontoBuchung (int konto, int betrag) {
// Es darf kein negative Wert für betrag verwendet vorkommen
assert (betrag >=0);
return (konto - betrag);
}

public static String verkettung (String a, String b) {
// Weder die Übergabevariable a noch b dürfen null Referenzen sein
assert (a!=null) && (b!=null);
return (a + b);
}

public static int paketvolumen(int laenge, int breite, int hoehe) {
// Alle Paketmaße müssen positiv sein
// Die Summe von laenge, breite und hoehe darf 2000 nicht uebersteigen
assert (laenge>0);
assert (breite>0);
assert (hoehe>0);
assert (laenge+breite+hoehe<=2000);

return (laenge*breite*hoehe);
}
}

javafrage Sun, 03/16/2014 - 18:00

Anonymous (not verified)

Tue, 06/27/2017 - 15:13

In "public static String verkettung" fehlen Klammern um die Assertion Bedingung.

5 Erweiterte Form von Assertions

5 Erweiterte Form von Assertions

Eine einfache Java-Assertion die die geforderte Volljährigkeit testet ist:

assert (alter >=18);

Implementieren Sie diese Assertion in der erweiterten Form. Wählen Sie eine Erweiterung, die eine Konsolenausgabe erzeugt, die den Benutzer über das falsche Alter sinnvoll informiert.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 4: Assertions Einsatzbereiche

  1. Invarianten
  2. Sonderfälle bei Verzeigungen die nie auftreten sollten.
  3. Fälle die nie Auftreten dürfen
javafrage Sun, 03/16/2014 - 18:08

6 Einschalten von Assertions

6 Einschalten von Assertions

Was muss ein Anwender einer Javaanwendung tun um die Zusatzüberprüfungen von Java-Assertions in einen Programmlauf nutzen zu können?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 5: Erweiterte Form von Assertions

assert (alter >=18): alter + " ist zu jung“;

 

javafrage Sun, 03/16/2014 - 18:21

7 Analyse von Assertions

7 Analyse von Assertions

Eine Methode die Personen beim Geburtstag ein Jahr älter macht benutzt eine Assertion:

class AssertionTest {
    public static int einJahrAelter(int alter) {
        assert (alter >=0): "Negatives Alter";
        alter++;
    return alter;
    }
 
    public static void main(String[] args) {
       int a = einJahrAelter( -17);
       System.out.println(a);
    }
}

Das Programm wird mit dem Kommando: java AssertionTest gestartet.

Was wird auf der Konsole ausgegeben?

Was geschieht bei diesem Programmablauf mit der Assertion?

Wie kann man andere Konsolenausgaben für Assertions erzwingen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 6: Einschalten von Assertions

Die Option -ea beim Start des Programms nutzen.

javafrage Thu, 01/15/2015 - 18:40

8 Implementieren einer Assertion (Methode transfer())

8 Implementieren einer Assertion (Methode transfer())

Die Methode transfer() führt eine Banküberweisung durch. Es wird ein Betrag von einem Konto1 auf ein Konto2 überwiesen. Schreiben Sie eine Assertion und fügen Sie sie am Anfang der Methode ein.

Die Assertion soll

  • bei negativen Beträgen aktiv werden
  • aktiv werden wenn Konto1 nicht gedeckt ist. Es soll nach der Überweisung keinen negativen Betrag haben
  • Nutzen Sie die erweiterte Form der Assertion die einen Text drucken kann.
  • Nutzen sie einen vernünftigen Text.
class Ueberweisung {
   public static int transfer(int betrag,int kontoVon, int kontoNach) {
      // Hier Assertion einfügen
      kontoNach += betrag;
      kontoVon -= betrag;
      return kontoNach;
   }

   public static void main(String[] args) {
      int k = transfer( 100, 200, 10);
      System.out.println(k);
      k = transfer( 100, 80, 10); // Hier soll Assertion feuern
      System.out.println(k);
   }
} 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 7: Analyse von Assertions

-16

Sie wird nicht ausgeführt da die Option -ea nicht verwendet wird. Durch Benutzen der Option -ea wird die Assertion benutzt und die Konsolenausgabe ändert sich

 

javafrage Thu, 01/15/2015 - 18:47

9 Implementieren einer Assertion

9 Implementieren einer Assertion

Die Methode drucke(Adresse a) druckt eine Adresse. Schreiben Sie eine Assertion die sicherstellt, dass die Adresse gedruckt werden kann. Sie soll vermeiden, dass die übergebene Addresse-referenz a leer ist.

  • Nutzen Sie die erweiterte Form der Assertion die einen Text druckt
  • Nutzen sie einen vernünftigen Ausgabetext.
class Demo { 
   public static void drucke(Addresse a) 
   { 
      // Hier Code eintragen 
      

      System.out.println(a.nachname); 
      System.out.println(a.vorname); 
   } 
}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 3
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 8: Implementieren einer Assertion (Methode transfer())

class Ueberweisung {
   public static int transfer(int betrag,int kontoVon, int kontoNach) {
      assert ((betrag > 0) && (kontoVon-betrag>= 0)) : "Ueberweisungslimitfehler";
      kontoNach += betrag;
      kontoVon -= betrag;
      return kontoNach;
   }

   public static void main(String[] args) {
      int k = transfer( 100, 200, 10);
      System.out.println(k);
      k = transfer( 100, 80, 10); // Hier soll Assertion feuern
      System.out.println(k);
   }
} 
javafrage Sun, 03/12/2017 - 16:26

10 Assertion versus if-Abfrage

10 Assertion versus if-Abfrage

Was ist der Vorteil der Assertion gegenüber einer if-Abfrage die nur drucken würde wenn eine Referenz übergeben wurde? Geben Sie eine kurze Erklärung. Was ist der Vorteil der Assertion gegenüber einer if-Abfrage die nur drucken würde wenn eine Referenz übergeben wurde? Geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 3+2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 9: Implementieren einer Assertion

class Demo { 
   public static void drucke(Addresse a) 
   { 
      // Hier Code eintragen

      assert (a!=null) : ''keine Adresse angegeben'';
      
      System.out.println(a.nachname); 
      System.out.println(a.vorname); 
   } 
}

Stopp! Nicht weiterlesen. Die Antwort zur aktuellen Frage kommt weiter unten!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 10: Assertion versus if-Abfrage

Die Assertion wird im normalen Programmablauf nicht ausgeführt und verbraucht daher keine unnötigen Ressourcen.

javafrage Sun, 03/12/2017 - 16:39

Fragen zu Ausnahmen (Exceptions)

Fragen zu Ausnahmen (Exceptions) javafrage Wed, 03/22/2017 - 17:33

1 Exceptions (Ausnahmen)

1 Exceptions (Ausnahmen)

Analysieren den Programmablauf des folgenden Programms. Im Programm tritt eine Division durch Null auf. Diese Division löst eine ArtithmeticException aus.

Zur Hilfe sei die Klassenhierarchie der relevaten Ausnahmeklassen gegeben:

ArithmeticException Klassenhierarchie Markieren Sie im Programm die
durchlaufenen Konsolenausgaben mit fortlaufenden Nummern. Beginnen Sie mit einer 1 bei der
Ausgabe „main:before“.
public class Ausnahme {
   public static void main(String[] args) {
      int a = 5;   
      int b = 0;
      int c = 0;

System.out.println("main:before"); //Aufruf x
c = divAussen(a, b);
System.out.println("main:after"); //Aufruf x
} // Ende von main

static int divAussen(int a, int b) {
int d;
System.out.println("divAussen:beginn"); //Aufruf x
try {
d = 2 * divInnen(a, b);
} catch (RuntimeException e) {
System.out.println("divAussen: Division durch Null"); //Aufruf x
d = -2;
}
System.out.println("divAussen:ende"); //Aufruf x
return d;
} // Ende von divAussen

static int divInnen(int a, int b) {
int d;
System.out.println("divInnen:beginn"); //Aufruf x
try {
d = a / b; // Hier tritt eine Ausnahme auf
} catch (IllegalArgumentException e) {
System.out.println("divInnen: Division durch Null");
d = -1;
}
System.out.println("divInnen:ende");
return d;
} // Ende von divInnen
} // Ende der Klasse

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten
javafrage Thu, 02/16/2012 - 08:57

2 Checked Exceptions

2 Checked Exceptions

Was muss ein Entwickler bei einer „Checked Exception“ immer tun? Welche beiden Möglichkeiten hat er?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zur Frage 1: Exceptions (Ausnahmen)

public class Ausnahme {
   public static void main(String[] args) {
      int a = 5;   
      int b = 0;
      int c = 0;
       System.out.println("main:before"); //Aufruf 1

c = divAussen(a, b);
System.out.println("main:after"); //Aufruf 6
} // Ende von main

static int divAussen(int a, int b) {
int d;
System.out.println("divAussen:beginn"); //Aufruf 2
try {
d = 2 * divInnen(a, b);
} catch (RuntimeException e) {
System.out.println("divAussen: Division durch Null"); //Aufruf 4
d = -2;
}
System.out.println("divAussen:ende"); //Aufruf 5
return d;
} // Ende von divAussen

static int divInnen(int a, int b) {
int d;
System.out.println("divInnen:beginn"); //Aufruf 3
try {
d = a / b; // Hier tritt eine Ausnahme auf
} catch (IllegalArgumentException e) {
System.out.println("divInnen: Division durch Null");
d = -1;
}
System.out.println("divInnen:ende");
return d;
} // Ende von divInnen
} // Ende der Klasse

javafrage Sun, 02/19/2012 - 15:13

3 Erkennen von Ausnahmen im Quellcode

3 Erkennen von Ausnahmen im Quellcode

Analysieren Sie den Programmablauf des folgenden Programms.

Im Programm tritt eine Division durch Null auf. Diese Division löst eine ArithmeticException aus.
Zur Hilfe sei die Klassenhierarchie der relevanten Ausnahmeklassen gegeben:

Markieren Sie im Programm die
durchlaufenen Konsolenausgaben mit
fortlaufenden, eingekreisten Nummern.
Beginnen Sie mit einer 1 bei der
Ausgabe „main:Anfang“.


package s1.block10;
public class Frage3 {
  
   public static void main(String[] args) {
      int a = 5; int b = 0;
      int c = 0;
      System.out.println("main:Anfang");
      c = divAussen(a, b);
      System.out.println("main:Ende");
   } // Ende von main
  
   static int divAussen(int a, int b) {
      int d;
      System.out.println("divAussen:Anfang");
      try {
        d = 2 * divInnen(a, b);
      } catch (ArithmeticException e) {
        System.out.println("divAussen: Division durch Null");
        d = -2;
      }
      System.out.println("divAussen:Ende"); 
      return d;
   } // Ende von divAussen
   
   static int divInnen(int a, int b) {
      int d;
      System.out.println("divInnen:Anfang");
      try {
         d = a / b; // Hier tritt eine Ausnahme auf
      } catch (IllegalArgumentException e) {
         System.out.println("divInnen: Division durch Null");
         d = -1;
      } catch (RuntimeException e) {
         System.out.println("divInnen: Division durch Null;" + " RuntimeException");
         d = -2;
      }
      System.out.println("divInnen:Ende");
      return d;
   } // Ende von divInnen
} // Ende der Klasse.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zur Frage 2: Checked Exceptions

Der Entwickler muss die Ausnahme immer behandeln. Entweder behandelt er sie direkt oder er reicht sie aus der aktuellen Methode heraus. Das Herausreichen geschieht mit dem Schlüsselwort throws. In diesem Fall muss sich die äussere Methode um das Behandlen der Ausnahme kümmern.

javafrage Wed, 01/09/2013 - 13:58

4 Programmablauf bei Ausnahmen

4 Programmablauf bei Ausnahmen

Das folgende Javaprogramm wirft eine ArithmeticException wegen einer Division durch Null in der Methode divide().

Welche Konsolenausgaben erzeugt das Programm wegen seiner System.out.println() Aufrufe?

Das Beispielprogramm:

package s1.block10;
public class Frage4 {

   public static void main(String[] args) {
      int a = 5;
      int b = 0;
      int c = 0;
      System.out.println("main:before");
      c = doubleDiv(a, b);
      System.out.println("main:after");
   }

   static int doubleDiv(int a, int b) {
      int d;
      System.out.println("doubleDiv:before");
      d = 2 * divide(a, b);
      System.out.println("doubleDiv:after");
      return d;
   }

   static int divide(int a, int b) {
      int d;
      System.out.println("divide:before");
      d = a / b;
      System.out.println("divide:after");
      return b;
   }
}
Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

 

Antwort zu Frage 3: Erkennen von Ausnahmen im Quellcode

public class Ausnahme {
  
   public static void main(String[] args) {
      int a = 5; int b = 0;
      int c = 0;
      System.out.println("main:Anfang"); // 1
      c = divAussen(a, b);
      System.out.println("main:Ende"); // 7
   } // Ende von main
  
   static int divAussen(int a, int b) {
      int d;
      System.out.println("divAussen:Anfang"); // 2
      try {
        d = 2 * divInnen(a, b);
      } catch (ArithmeticException e) {
        System.out.println("divAussen: Division durch Null");
        d = -2;
      }
      System.out.println("divAussen:Ende"); // 6
      return d;
   } // Ende von divAussen
   
   static int divInnen(int a, int b) {
      int d;
      System.out.println("divInnen:Anfang"); // 3
      try {
         d = a / b; // Hier tritt eine Ausnahme auf
      } catch (IllegalArgumentException e) {
         System.out.println("divInnen: Division durch Null");
         d = -1;
      } catch (RuntimeException e) {
         System.out.println("divInnen: Division durch Null;" + " RuntimeException"); // 4
         d = -2;
      }
      System.out.println("divInnen:Ende"); // 5
      return d;
   } // Ende von divInnen
} // Ende der Klasse.
javafrage Wed, 01/09/2013 - 20:30

Anonymous (not verified)

Sun, 06/02/2013 - 13:31

Hallo,

ich bin von dem "feuern" von "IllegalArgumentException" verwirrt.
Laut Definition dürfte es doch bei einer Division durch 0 gar nicht zu einer solchen kommen (4), nur bei einer "ArithmeticException".

Wenn ich das Programm laufen lasse gibt es mir auch folgende Ausgaben:
run:
main:Anfang (1)
divAussen:Anfang (2)
divInnen:Anfang (3)
divInnen: Division durch Null; RuntimeException (4)
divInnen:Ende (5)
divAussen:Ende (6)
main:Ende (7)
BUILD SUCCESSFUL (total time: 0 seconds)

... es kommt also nach (3) zu keiner IllegalArgumentException.

Es fehlt in ihrer Lösung auch "divInnen:Ende (5)"

MfG .. Norman WIBI 12B

Stefan Schneider

Sun, 06/02/2013 - 15:55

In reply to by Anonymous (not verified)

Gut beobachtet,
Fehler wurde korrigiert.
Die Konsolenausgaben sind:
main:Anfang
divAussen: Anfang
divInnen: Anfang
divInnen: Division durch Null; RuntimeException
divInnen: Ende
divAussen: Ende
main: Ende

5 Assertions versus Exceptions (Annahmen, Zusicherungen versus Ausnahmen)

5 Assertions versus Exceptions (Annahmen, Zusicherungen versus Ausnahmen)

Wann soll ein Entwickler eine Java-Assertion (Annahme, Zusicherung) verwenden und nicht eine Ausnahme (Exception)?

Geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 4: Programmablauf bei Ausnahmen

main:before
doubleDiv:before
divide:before
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Kurs2.Exception.Frage1.divide(Frage1.java:25)
at Kurs2.Exception.Frage1.doubleDiv(Frage1.java:17)
at Kurs2.Exception.Frage1.main(Frage1.java:10)
javafrage Thu, 01/10/2013 - 08:11

6 Benutzung verschiedener Ausnahmen (Exception) und Zusicherungen, Annahmen (Assertions)

6 Benutzung verschiedener Ausnahmen (Exception) und Zusicherungen, Annahmen (Assertions)

In einer Methode A können

  • checked Exceptions (Ausnahmen)
  • unchecked Exceptions (Ausnahmen) und
  • Assertions (Annahmen)

ausgelöst werden.

Ein Entwickler nutzt diese Methode A. Er kennt aber nicht die Implementierung der Methode A.

Fragen:

  • Bei welcher der drei Konstrukte, kann er zur Laufzeit das Auslösen durch eine Konfiguration des Laufzeitsystems unterdrücken?
  • Auf welche der drei Möglichkeiten muss er beim Aufruf, durch eine entsprechende Implementierung reagieren.
  • Warum ist es nicht sinnvoll für alle Ausnahmen die in einer Methode auftreten können eine Behandlung zu implementier)? Nennen Sie eine Beispiel.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Antwort zu Frage 5: Assertions versus Exceptions (Annahmen, Zusicherungen versus Ausnahmen)

Man verwendet Assertions zum Abfragen von Invarianten/Zuständen die im normalen Programmbetrieb nie vorkommen sollten
Man verwendet Ausnahmen/Exceptions für Zustände/Fehlerfälle die im normalen Progammbetrieb vorkommen können, jedoch eher selten sind.
Man verwendet Ausnahmen insbesondere für Sonderfälle die nicht unter dem direkten Einfluß des Entwicklers stehen. Zum Bsp.: Kein freier Hauptspeicher, keine Netzwerkverbindung.

javafrage Thu, 01/10/2013 - 08:18

7 Programmablauf bei mehrern try-catch-Blöcken

7 Programmablauf bei mehrern try-catch-Blöcken

Welche der beiden catch Blöcke werden im folgenden Programm durchlaufen? Welche Ausgaben erzeugt das folgende Programm?

Hinweis: Division durch 0 führen zu einer ArithmeticException.

package s1.block10;
public class Frage7

   public static void main(String[] args) {
     int a = 5;
     int b = 0;
     int c = 0;
     System.out.println("main:before");
     c = doubleDiv(a, b);
     System.out.println("main:after");
   }

   static int doubleDiv(int a, int b) {
     int d;
     System.out.println("doubleDiv:before");
     try {
        d = 2 * divide(a, b);
     }
     catch (ArithmeticException e) {
        System.out.println("doubleDiv: Division durch Null");
        d=-20;
     }
     System.out.println("doubleDiv:after");
     return d;
   }

   static int divide(int a, int b) {
      int d;
      System.out.println("divide:before");
      try {
         d = a / b;
      }
      catch (ArithmeticException e) {
         System.out.println("divide: Division durch Null");
         d = -1;
     }
     System.out.println("divide:after");
     return d;
  } // Ende main()
} // Ende Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

 

Antwort zu Frage 6: Benutzung verschiedener Ausnahmen (Exception) und Zusicherungen, Annahmen (Assertions)

Bei welcher der drei Konstrukte, kann der Entwickler zur Laufzeit das Auslösen durch eine Konfiguration des Laufzeitsystems unterdrücken?

  • Das Prüfen von Assertions kann man zur Laufzeit unterdrücken.

Auf welche der drei Möglichkeiten muss er beim Aufruf, durch eine entsprechende Implementierung reagieren.?

  • Checked Exceptions

Warum ist es nicht sinnvoll für alle Ausnahmen die in einer Methode auftreten können eine Behandlung zu implementieren? Nennen Sie eine Beispiel.

  • Es können in jedem Befehl Ausnahmen auftreten. Die Ausnahme kann durch ein externes Ereignis ausgelöst werden.(Netzwerkfehler, kein Hauptspeicher etc.)
  • Beispiel: Eine Out-of-Memory-Ausnahme kann bei fast jedem Aufruf ausgelöst werden.
javafrage Fri, 01/25/2013 - 08:49

Anonymous (not verified)

Thu, 04/18/2013 - 06:36

hier muss 2000 stehen anstatt 200 assert (laenge+breite+hoehe

Anonymous (not verified)

Mon, 05/25/2015 - 20:13

assert (laenge>=0);
assert (breite>=0);
assert (hoehe>=0);

Laut Kommentar müssen alle Pakermaßen positiv sein. Wenn nicht der Fall ist, soll nach der Prüfung
von Assertions eine Fehlermeldung ausgegeben werden. Hier wird aber geprüft ob es positiv ist.

Anonymous (not verified)

Mon, 06/13/2016 - 16:49

Kann man bei der dritten Assertion die einzelnen Prüfungen auch mit && voneinander trennen?

Stefan Schneider

Mon, 06/13/2016 - 18:01

In reply to by Anonymous (not verified)

Ja, das geht auch. Hier gibt es mehrere Lösungen.

8 Programmablauf bei unterschiedlichen try-catch Blöcken

8 Programmablauf bei unterschiedlichen try-catch Blöcken

Hinweis: Die Implementierung der Frage 2 unterscheidet sich nur in den benutzten Ausnahmen von der Frage 2.52!

Welche der beiden catch Blöcke werden im folgenden Programm durchlaufen? Welche Ausgaben erzeugt das folgende Programm?

package s1.block10;

public class Frage7 {

   public static void main(String[] args) {
      int a = 5;
      int b = 0;
      int c = 0;
      System.out.println("main:before");
      c = doubleDiv(a, b);
      System.out.println("main:after");
   }

   static int doubleDiv(int a, int b) {
     int d;
     System.out.println("doubleDiv:before");
     try {
       d = 2 * divide(a, b);
   }
   catch (RuntimeException e) {
      System.out.println("doubleDiv: Division durch Null");
      d=-2;
   }
   System.out.println("doubleDiv:after");
   return d;
 }

   static int divide(int a, int b) {
      int d;
      System.out.println("divide:before");
      try {
         d = a / b;
      }
      catch (IllegalArgumentException e) {
         System.out.println("divide: Division durch Null");
         d = -1;
      }
      System.out.println("divide:after");
      return d;
   } // Ende main()
} // Ende der Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 7: Programmablauf bei mehrern try-catch-Blöcken

Es wird nur der try-catch Block in divide() aufgerufen:

main:before
doubleDiv:before
divide:before
divide: Division durch Null
divide:after
doubleDiv:after
main:after
javafrage Fri, 01/25/2013 - 09:07

9 Programmablauf bei mehreren catch Blöcken

9 Programmablauf bei mehreren catch Blöcken

Hier werden in der Methode divide() mehrere Ausnahmebehandlungen (catch Blöcke) zu dem gegebenen try Block angeboten. Welche Blöcke werden ausgeführt und warum? Wie sieht die Konsolenausgabe aus?

package s1.block10;

public class Frage9{
   public static void main(String[] args) {
      int a = 5;
      int b = 0;
      int c = 0;
      System.out.println("main:before");
      c = doubleDiv(a, b);
     System.out.println("main:after");
   }

   static int doubleDiv(int a, int b) {
      int d;
      System.out.println("doubleDiv:before");
      try {
         d = 2 * divide(a, b);
      } catch (RuntimeException e) {
         System.out.println("doubleDiv: RuntimeException");
         d = -2;
     }
     System.out.println("doubleDiv:after");
     return d;
   }

   static int divide(int a, int b) {
      int d;
      System.out.println("divide:before");
      try {
         d = a / b;
      } catch (IllegalArgumentException e) {
         System.out.println("divide: IllegalArgumentException");
         d = -1;
     } catch (ArithmeticException e) {
        System.out.println("divide: ArithmeticException");
        d = -2;  
     } catch (RuntimeException e) {
        System.out.println("divide: RuntimeException");
        d = -3;
     }
     finally {
        System.out.println("divide: geschafft");
     }
     System.out.println("divide:after");
     return d;
   } // ende main()
} // Ende Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 8: Programmablauf bei mehrern try-catch-Blöcken

Der try-catch Block in divide() wird nicht ausgeführt da keine IllegalArgumentException vorliegt. Erst der try-catch Block in der äusseren Methode doubleDiv() kommt zum Zug. Der letzte Dokumentationsaufruf in divide() wird daher nicht aufgerufen.

main:before
doubleDiv:before
divide:before
doubleDiv: Division durch Null
doubleDiv:after
main:after
javafrage Fri, 01/25/2013 - 09:20

10 Behandeln und Weiterreichen einer Ausnahme

10 Behandeln und Weiterreichen einer Ausnahme

In der folgenden Implementierung wird eine Ausnahme behandelt und dann eine neue erzeugt. Welche Blöcke werden ausgeführt und warum? Wie sieht die Konsolenausgabe aus?

Hinweis: Der Code der im Vergleich zur Frage 9 geändert wurde, ist fett markiert:

package s1.block10;

public class Frage10{
   public static void main(String[] args) {
     int a = 5;
     int b = 0;
     int c = 0;
     System.out.println("main:before");
     c = doubleDiv(a, b);
     System.out.println("main:after");
   }

static int doubleDiv(int a, int b) {
   int d;
   System.out.println("doubleDiv:before");
   try {
     d = 2 * divide(a, b);
   } catch (IllegalArgumentException e) {
       System.out.println("doubleDiv: IllegalArgumentException: "
           + e.getMessage());
       d = -2;
   }
   System.out.println("doubleDiv:after");
   return d;
}

static int divide(int a, int b) {
   int d;
   System.out.println("divide:before");
   try {
      d = a / b;
   } catch (IllegalArgumentException e) {
      System.out.println("divide: IllegalArgumentException");
      d = -1;
   } catch (ArithmeticException e) {
      System.out.println("divide: ArithmeticException");
      throw new IllegalArgumentException("Ich kann nicht mehr");
   } catch (RuntimeException e) {
      System.out.println("divide: RuntimeException");
      d = -3;
   }
   finally {
      System.out.println("divide: geschafft");
   }
   System.out.println("divide:after");
   return d;
   } // Ende main()
} // Ende der Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 9: Programmablauf bei mehreren catch Blöcken

Der erste Catch Block in divide() wird nicht aufgerufen weil die entsprechende Ausnahme nicht vorliegt.

Der zweite Catch Block wird aufgerufen da die Ausnahme die passende ArithmeticExpetion ist.

Der dritte Catch Block wird nicht mehr aufgerufen obwohl eine ArtithmeticException auch eine RuntimeException ist. Die Ausnahme wurde schon im vorhergehenden Block behandelt.

Der finally Block wird immer durchlaufen.

main:before
doubleDiv:before
divide:before
divide: ArithmeticException
divide: geschafft
divide:after
doubleDiv:after
main:after

 

javafrage Fri, 01/25/2013 - 09:28

11 Zwei Arten von Ausnahmen

11 Zwei Arten von Ausnahmen

Bei der Behandlung von auftretenden Ausnahmen muss der Entwickler zwei Arten von Ausnahmen unterscheiden.

Nennen Sie die englischen Namen und charakterisieren Sie die beiden Arten:

  • Erste Art (englischer Name): ?
    • Was muss der Entwickler hier beachten?
  • Zweite Art (englischer Name): ?
    • Was muss der Entwickler hier beachten?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 10: Behandeln und Weiterreichen einer Ausnahme

Interessant: der finally Block wird trotz des Werfens der neuen Ausnahme durchlaufen:

main:before
doubleDiv:before
divide:before
divide: ArithmeticException
divide: geschafft
doubleDiv: IllegalArgumentException: Ich kann nicht mehr
doubleDiv:after
main:after
javafrage Sun, 02/22/2015 - 18:02

12 Syntax und Bedeutung von try-catch Blöcken

12 Syntax und Bedeutung von try-catch Blöcken

In Javacode können Ausnahmen auftreten. Man kann die Ausnahmen in Java mit einer besonderen Sprachkonstruktion behandeln. Sie umfasst das Programmieren von bis zu drei bestimmten Blöcken. Nennen und beschreiben Sie die drei Blöcke in der Reihenfolge des Auftretens. Vervollständigen Sie die Tabelle:

 

Abfolge Schlüsselwort des Blocks Optionaler Block ?
[Ja|Nein]
Kann mehrfach vorkommen?
[Ja|Nein]
Was implementiert man in diesem Block?
1. Block (Anfang)        
2. Block (Mitte)        
3. Block (Ende)        

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 9 Minuten

Antwort zu Frage 11 Zwei Arten von Ausnahmen

  • Erste Art (englischer Name): Unchecked Exceptions
    • Was muss der Entwickler hier beachten? Sie müssen nicht mit einem try-catch Block gefangen werden.
  • Zweite Art (englischer Name): Checked Exceptions
    • Was muss der Entwickler hier beachten? Sie müssen immer mit einem try-catch Block ummantelt werden oder die Ausnahme muss im Methodenkopf deklariert werden

 Die Antwort zu Frage dieser Seite finden Sie viel weiter unten:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 12: Syntax und Bedeutung von try-catch Blöcken

Abfolge Schlüsselwort des Blocks Optionaler Block ?
[Ja|Nein]
Kann mehrfach vorkommen?
[Ja|Nein]
Was implementiert man in diesem Block?
1. Block (Anfang)  try  Nein  Nein  Der Code der eine Ausnahme auslösen kann.
2. Block (Mitte)  catch  Nein  Ja  Der Code der ausgeführt wird wenn eine Ausnahme aufgetreten ist.
3. Block (Ende)  finally  Ja  Nein  Zusätzlich: Was ist besonders an diesem Block?
Dieser Block wird immer ausgeführt, gleich ob eine Ausnahme aufgetreten ist oder nicht
javafrage Sun, 02/22/2015 - 18:26

Fragen zu javadoc

Fragen zu javadoc Stefan Schneider Sat, 11/17/2018 - 17:05

1. Dokumentationskommentare

1. Dokumentationskommentare

Dokumentieren Sie die Methode mult. Sie implementiert die Multiplikation zweier Zahle und gibt das Ergebnis aus. Als Dokumentationstext für die Sematik der Methode genügt ein Text wie „multipliziert zwei Werte“.

Achten Sie auf die Notation von:

  • Syntax des Dokumentationskommentars
  • Dokumentation der Methode mit „multipliziert zwei Werte“
  • Dokumentation der Eingabewerte
  • Dokumentation des Ausgabewerts
public double mult(double a, double b) {
   double c = a* b;
return c;
}
Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Wed, 10/17/2012 - 17:21

2. Eigenschaften von Dokumentationskommentaren

2. Eigenschaften von Dokumentationskommentaren

Nennen Sie mindesten zwei Eigenschaften der Dokumentationskommentare die man beim Generieren der Kommentare mit javadoc wahlweise Erzeugen oder Unterdrücken kann.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Dokumentationskommentare

/**
* multipliziert zwei Werte
* @param a erster Faktor
* @param b zweiter faktor
* @return Ergebnis der Multiplikation
*/
public double mult(double a, double b) {
   double c = a* b;
return c;
}
javafrage Wed, 07/03/2013 - 17:36

3. Kommentieren von Javaprogrammen

3. Kommentieren von Javaprogrammen

Ein gutes Programm sollte sinnvolle Kommentare enthalten.
Welche 2 Arten von Kommentaren gibt es in Java-Programmen?

Geben Sie jeweils einekurze Erklärung mit einem kleinen Beispiel und unter Angabe eines ange­messenen Einsatzzweckes! (Hier ist nicht nach Dokumentationskommentaren für Schnittstellen gefragt)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Eigenschaften von Dokumentationskommentaren

  • Autorinformation
  • Versionsinformation
  • private Attribute und Methoden
javafrage Tue, 12/27/2011 - 14:33

4. javadoc

4. javadoc

Was ist an Dokumentationskommentaren besonders im Vergleich zu normalen Kommentaren?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Kommentieren von Javaprogrammen

Zeilenkommentare

// Dies ist ein Zeilenkommentar

Mehrzeilige Kommentare

/*
Dies ist ein
mehrzeiliger Kommentar
*/

Antwort zu Frage 4.: javadoc

Sie werden von javadoc aus dem Quellcode ausgelesen und für eine automatisch generierte Dokumentation verwendet.

javafrage Wed, 12/28/2011 - 09:51

Fragen zu Archivieren mit jar

Fragen zu Archivieren mit jar javafrage Sat, 11/17/2018 - 17:22

1. java -jar Option

1. java -jar Option

Ein jar Archiv test.jar welches ein Hauptprogramm enthält, lässt sich nicht von der Laufzeitumgebung mit dem Befehl:

java -jar test.jar

starten obwohl alle benötigten Klassen im Archiv gepackt sind.

Das Programm funktioniert jedoch im entpackten Zustand. Was fehlt? – Kurze Erklärung!

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort finden Sie auf der Seite der nächsten Frage (URL rechts unten).

javafrage Tue, 12/27/2011 - 10:23

2. jar versus zip

2. jar versus zip

In Ihrer Entwicklungsgruppe schlägt ein Entwickler vor, eine Anwendung aus mehreren Klassen und Dateien mit dem zip Kommando zu bündeln und auf den Systemen der Endanwender alle benötigten Klassen mit unzip wieder auszupacken. Warum ist ein jar Archiv die bessere Lösung?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: java -jar Option

Ein Eintrag im jar Manifest mit dem Namen der Klasse mit der das Programm gestartet werden soll.
Optional: Der Eintrag muss Main-Class: klassenname lauten

javafrage Tue, 12/27/2011 - 10:30

3. Manifestdatei in jar Archiven

3. Manifestdatei in jar Archiven

Wozu dient die Manifestdatei in einem jar Archiv?
Geben Sie eine kurze Erklärung.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: jar versus zip

  1. Es ist nicht garantiert, dass auf allen Zielsystemen das zip Kommando zur Verfügung steht
  2.  jar Archive erlauben es dem Entwickler die Integrität der Anwendung durch eine digitale Signatur zu garantieren,
    die Anwendung als einzelne jar Datei auszuliefern und damit potentielle Installationsfehler auszuschließen,
    den Namen der Klasse mit der das Programm gestartet werden soll zu definieren
javafrage Thu, 10/25/2012 - 17:49

4. Inspektion einer jar Datei

4. Inspektion einer jar Datei

Sie erhalten eine Datei unbekannt.jar. Geben Sie den Kommanozeilenbefehl des JDK an mit dem Sie erkennen können was diese Datei enthält.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zur Frage 3: Manifestdatei in jar Archiven

  • zur Deklaration der zum Start zu benutzenden Klasse
  • zur Signierung der Datei
  • zum Verwalten von Hilfsinformationen wie verwendete JDK version etc
  • Copyright und Lizenzinformationen

 

Antwort zur Frage 4: Inspektion einer jar Datei

jar -tvf unbekannt.jar
javafrage Mon, 12/23/2019 - 16:41

2. Fragen für Fortgeschrittene

2. Fragen für Fortgeschrittene

Jonglierender Duke

Fragen zu Java, Algorithmen und Datenstrukturen für Fortgeschrittene.

Die Fragen in dieser Kategorie sind auf das Skript: "Fortgeschrittene Programmiertechniken" für das zweite Semester abgestimmt.

javafrage Sun, 01/29/2012 - 10:52

Fragen zur graphischen Programmierung (Swing)

Fragen zur graphischen Programmierung (Swing) javafrage Sun, 03/19/2017 - 17:50

1 Swing Layoutmanager

1 Swing Layoutmanager

Bestimmen Sie den oder die Layoutmanager für Swingbenutzeroberflächen abhängig von der Position und der Größe der gezeigten Komponenten. Gehen Sie davon aus, dass das Fenster mit dem JPanel in der Wunschgröße gezeigt wird.

Beispiel:

a.)LayoutManager : FlowLayoutManager

Hinweis: Sie benötigen eventuell Hilfspanels mit eigenem Layoutmanager

Beispiele für Komponentenlayouts

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 7 Minuten
javafrage Fri, 02/03/2012 - 11:06

Anonymous (not verified)

Sun, 04/28/2013 - 11:02

Kann es sein, dass bei der Frage die genaue Fragestellung fehlt?

Danke. Wurde korrigiert. Muss ein klassischer Copy-and-paste Fehler gewesen sein...

2 Relatives Layoutmanagement versus absolutes Layoutmanagement

2 Relatives Layoutmanagement versus absolutes Layoutmanagement

Warum ist in den meisten Fällen die Verwendung von Layoutmanagern bei der Entwicklung von graphischen Benutzeroberflächen sinnvoller als ein Pixel-genaues Layout aller Komponenten?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 1: Swing LayoutManager

a.) LayoutManager: Flow oder Box

b.) LayoutManager: Box; Alle Elemente haben gleiche Höhe, C hat eigene Breite die Boxbreite bestimmt.

c.) LayoutManager: Borderlayout ohne Centerelement

d.) Layoutmanager: Gridlayoutmanager

e.) LayoutManager äussereres JPanel: Borderlayout mit A und B in eigenem Layoutmanager im Norden

  • Hilfspanel um A+B: Layoutmanager des Hilfspanel: Flow, Grid, Border oder Box
javafrage Mon, 02/06/2012 - 16:25

3 Welcher Layoutmanager wird hier benutzt?

3 Welcher Layoutmanager wird hier benutzt?

Das Applet weiter unten kann 6 JFrames starten. Jedes JFrame benutzt ein JPanel. Welcher Layoutmanager wird im jeweiligen Frame verwendet?

Manche Layoutmanager benötigen Direktiven bei der Erzeugung des Layoutmanager. Welche Direktiven wurden hier verwendet?

Manche Komponenten benötigen Direktiven für den Layoutmanager beim Hinzufügen in das JPanel?

Laden Sie die Datei Layout.jar auf Ihren Rechner. Starten Sie sie mit dem Befehl:

java -jar Layout.jar

Ein Doppelklick auf der heruntergeladenen Datei reicht vielleicht auch.

Die 6 JFrames verwenden jeweils nur einen Layoutmanager.

Hinweis: Links von diesem Text sollte automatisch ein Applet mit 6 Knöpfen gestartet werden. Beim Drücken eines Knopf wird jeweils ein Fenster mit einem JFrame erzeugt. Es taucht am linken oberen Bildschirmrand auf.

Tipp: Vergrößern und verkleinern Sie die Fenster. Man kann bei manchen Fenstern erst erkennen welcher Layoutmanager verwendet wird wenn die einzelnen Komponenten nicht ihre Wunschgröße erhalten

Antwort zu Frage 2: Relatives Layoutmanagement versus absolutes Layoutmanagement

Graphische Oberflächen müssen auf unterschiedlich großen Bildschirmen angezeigt werden können.

Komponenten haben eventuell auf Grund des Betriebssystems unterschiedliche Größen.

GUIs werden vom Benutzer eventuell in der Form geändert.

Bei all diesen Gegebenheiten ist ein automatisches Anlegen eines neuen Layout von Vorteil.

javafrage Sat, 02/25/2012 - 11:59

Anonymous (not verified)

Mon, 06/20/2016 - 10:27

Kann es sein, dass hier das Applet fehlt?

Anonymous (not verified)

Tue, 06/26/2018 - 17:45

Hier fehlt wohl das Applet.
Da Applets von den meisten Browsern nicht mehr unterstützt werden, sollte die Frage wohl rausgenommen oder umformuliert werden.

LG:)

Stefan Schneider

Tue, 06/26/2018 - 18:00

In reply to by Anonymous (not verified)

Die Zeiten der Applets sind vorbei.
Ich habe den Text angepasst. Man muss sich die jar Datei individuell herunterladen.

4 Swing: Layoutmanager für drei Komponenten

4 Swing: Layoutmanager für drei Komponenten

Welche Layoutmanager können auf Wunsch drei Komponenten horizontal oder auch vertikal anzeigen?

Gehen Sie davon aus, dass der LayoutManager die Komponenten mindestens in ihrer Wunschgröße darstellen kann.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 3: Layoutmanager

  • Layoutmanager 1: Flowlayout
  • Layoutmanager 2: Boxlayout, vertikal (Parameter BoxLayout.Y_AXIS)
  • Layoutmanager 3: Gridlayout(2,3), 2 Zeilen, 3 Spalten
  • Layoutmanager 4: Borderlayout
    • JButton "A": Borderlayout.NORTH
    • JButton "B": Borderlayout.WEST
    • JButton "CCCCCCCC": BorderLayout.CENTER
    • JTextArea: Borderlayout.EAST
    • JButton "D": Borderlayout.SOUTH
  • Layoutmanager 5: Boxlayout, horizontal (Parameter BoxLayout.X_AXIS)
  • Layoutmanager 6:
    • JButton "A": Borderlayout.NORTH
    • JButton "CCCCCCCC": BorderLayout.CENTER
    • JTextArea: Borderlayout.EAST
    • JButton "D": Borderlayout.SOUTH

Der Quellcode des Applets

package Kurs2.Swing;
 
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
 
public class LayoutTest extends JApplet implements ActionListener {
    JButton[] b;
    static final int BUTTONS = 6;
 
    public LayoutTest() {
        b = new JButton[BUTTONS+1];
        JPanel jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.Y_AXIS));
        for (int i=1; i<= BUTTONS; i++) {
            b[i] = new JButton("Layoutmanager " + i );
            jp.add(b[i]);
            b[i].addActionListener(this);
        }
        Container myPane = getContentPane();
        myPane.add(jp);
    }
    public static void main(String[] args) {
        layout1();
        layout2();
        layout3();
        layout4();
        layout5();
        layout6();
    }
 
    public static void layout1() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 1");
        jp = new JPanel();
        jp.setLayout(new FlowLayout());
 
        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("B"),BorderLayout.WEST);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.SOUTH);
        jp.add(new JButton("D"));
 
        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
 
    public static void layout2() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 2");
        jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.Y_AXIS));

        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"));

      f.add(jp);
        f.pack();
        f.setVisible(true);
    }

    public static void layout3() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 3");
        jp = new JPanel();
        jp.setLayout( new GridLayout(2,3));

        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"),BorderLayout.CENTER);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
    public static void layout4() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 4");
 
        jp = new JPanel();
        jp.setLayout( new BorderLayout());

        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("B"),BorderLayout.WEST);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.EAST);
        jp.add(new JButton("D"),BorderLayout.SOUTH);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }

    public static void layout5() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 5");
        jp = new JPanel();
        jp.setLayout( new BoxLayout(jp,BoxLayout.X_AXIS));
 
        jp.add(new JButton("A"));
        jp.add(new JButton("B"));
        jp.add(new JButton("CCCCCCCC"));
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta);
        jp.add(new JButton("D"));
 
        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
public static void layout6() {
        JFrame f ;
        JPanel jp;
        f= new JFrame("Layout 6");

        jp = new JPanel();
        jp.setLayout( new BorderLayout());

        jp.add(new JButton("A"),BorderLayout.NORTH);
        jp.add(new JButton("CCCCCCCC"),BorderLayout.CENTER);
        JTextArea jta =new JTextArea(2,10);
        jta.append("JTextArea \nrow 2\nrow 3");
        jp.add(jta,BorderLayout.EAST);
        jp.add(new JButton("D"),BorderLayout.SOUTH);

        f.add(jp);
        f.pack();
        f.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == b[1]) layout1();
        if (source == b[2]) layout2();
        if (source == b[3]) layout3();
        if (source == b[4]) layout4();
        if (source == b[5]) layout5();
        if (source == b[6]) layout6();
    }
}

 

javafrage Fri, 01/04/2013 - 12:30

5 Flowlayout-Manager versus Boxlayout-Manager

5 Flowlayout-Manager versus Boxlayout-Manager

Der Flowlayout-Manager und der Boxlayout-Manager sind sich ähnlich. Der Flowlayout-Manager ist nicht immer eine gute Wahl.
Nennen Sie 3 Fälle in denen man den Boxlayout-Manager verwenden sollte.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 4: Swing, Layoutmanager für drei Komponenten

  • Boxlayout-Manager
  • Gridlayout-Manager
  • Borderlayout-Manager

 

javafrage Fri, 01/04/2013 - 12:37

Anonymous (not verified)

Thu, 06/06/2019 - 20:42

In Frage 4 auf der vorherigen Seite heißt es: "Gehen Sie davon aus, dass der LayoutManager die Komponenten in ihrer Wunschgröße darstellen kann."
Im Skript steht, dass der Gridlayout-Manager eine einheitliche Größe für alle Zellen hat. Wieso ist er als Antwort hier trotzdem richtig?

6 Swing, vertikale Anordnung von Komponenten

6 Swing, vertikale Anordnung von Komponenten

Sie sollen 5 unterschiedliche Komponenten vertikal anordnen. Alle Komponenten sollen die gleiche Fläche einnehmen. Welchen Layoutmanager wählen Sie?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1 Minute

Antwort zu Frage 5: Swing, Flowlayout-Manager versus Boxlayout-Manager

  1. Komponenten behalten minimal Wunschgröße und nutzen weitere Fläche wenn möglich
  2. Es gibt nie einen Umbruch in eine zweite Zeile
  3. Man kann ein vertikales Layout erzwingen

 Tipp: Mit Lösungsapplet zu Frage 2.25 spielen.

javafrage Fri, 01/04/2013 - 12:45

7 Swing, Implementieren einer Adapterklasse

7 Swing, Implementieren einer Adapterklasse

In der folgenden Klasse wird für das JLabel text1 eine innere Klasse MyMouseListener implementiert die auf 2 Ereignisse mit  Konsolenausgaben reagiert:

  • Maus kommt über Komponente
  • Maus verlässt die Komponente

Hierzu wird die Schnittstelle MouseListener implementiert.
Aufgabe:

  • Implementieren Sie eine gleichwertige innere Klasse MyMouseAdapter für das JLabel text2.
  • Spezialisieren Sie hierzu die abstrakte Klasse Swingklasse MouseAdapter die MouseListener implemeniert
  • Die neue Klasse soll die gleichen Ereignisse gleich behandeln(Kopieren Sie den Methodenrumpf)
package Kurs2.K2012;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;

public class ListenerToAdapter {

   public class MyMouseListener implements MouseListener {
      public void mouseClicked(MouseEvent e) {}
      public void mouseExited(MouseEvent e)
         { System.out.println("raus");}
      public void mouseEntered(MouseEvent e)
         { System.out.println("rein");}
      public void mousePressed(MouseEvent e) {}
      public void mouseReleased(MouseEvent e){}
      }

   public class MyMouseAdapter // Ab hier implementieren...
 
 
 
 
     // Ende der Implementierung
   } //Ende Klasse MyMouseAdapter

   public ListenerToAdapter() {
JLabel text1 = new JLabel("Label 2");
text1.addMouseListener(new MyMouseListener());
JLabel text2 = new JLabel("Label 2");
text2.addMouseListener(new MyMouseAdapter());
}
}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 6: Swing, vertikale Anordnung von Komponenten

  • Gridlayout-Manager

 

javafrage Fri, 01/04/2013 - 15:16

8 Adapterklassen versus Schnittstellen

8 Adapterklassen versus Schnittstellen
  1. Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
  2. Wann haben die Adapterklassen im Vergleich zu den Schnittstellen keine Vorteile für den Entwickler?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 7: Swing, Implementieren einer Adapterklasse

In der folgenden Klasse wird für das JLabel text1 eine innere Klasse MyMouseListener implementiert die auf 2 Ereignisse mit  Konsolenausgaben reagiert:

  • Maus kommt über Komponente
  • Maus verlässt die Komponente

Hierzu wird die Schnittstelle MouseListener implementiert.
Aufgabe:

  • Implementieren Sie eine gleichwertige innere Klasse MyMouseAdapter für das JLabel text2.
  • Spezialisieren Sie hierzu die abstrakte Klasse Swingklasse MouseAdapter die MouseListener implemeniert
  • Die neue Klasse soll die gleichen Ereignisse gleich behandeln(Kopieren Sie den Methodenrumpf)
package Kurs2.K2012;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;

public class ListenerToAdapter {

   public class MyMouseListener implements MouseListener {
      public void mouseClicked(MouseEvent e) {}
      public void mouseExited(MouseEvent e)
         { System.out.println("raus");}
      public void mouseEntered(MouseEvent e)
         { System.out.println("rein");}
      public void mousePressed(MouseEvent e) {}
      public void mouseReleased(MouseEvent e){}
      }

   public class MyMouseAdapter extends MouseAdapter // Ab hier implementieren...
      public void mouseExited(MouseEvent e) 
{ System.out.println("raus");}
public void mouseEntered(MouseEvent e)
{ System.out.println("rein");}
// Ende der Implementierung } //Ende Klasse MyMouseAdapter public ListenerToAdapter() {
JLabel text1 = new JLabel("Label 2");
text1.addMouseListener(new MyMouseListener());
JLabel text2 = new JLabel("Label 2");
text2.addMouseListener(new MyMouseAdapter());
}
}

 

javafrage Sat, 01/05/2013 - 13:44

Anonymous (not verified)

Sun, 04/28/2013 - 11:06

Muss die Klasse MyMouseAdapter nicht von MouseAdapter erben, um die genutzten Methoden "mouseExited" und "mouseEntered" überschreiben zu können? Also: public class MyMouseAdapter extends MouseAdapter { ... } .

9 Innere und anonyme Klassen

9 Innere und anonyme Klassen

Welchen Vorteil haben innere und anonyme Klassen in der Swing GUI Programmierung?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Swing, Implementieren einer Adapterklasse

  1. Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
    • Man muss nur die gewünschten Methoden durch überschreiben implementieren.
      Nicht benötigte Methoden können als leere Methoden geerbt werden. Bei einer Schnittstelle muss man alle Methoden implementieren. Auch die nicht benötigten.
  2. Wann haben die Adapterklassen im Vergleich zu den Schnittstellen keine Vorteile für den Entwickler?
    • Wenn man alle Methoden der Klasse sowieso implementieren muss. Wenn man von einer anderen Klasse erben möchte
       

 

javafrage Sat, 01/05/2013 - 13:58

10 Implementieren einer Listenerklasse

10 Implementieren einer Listenerklasse

Implementieren Sie eine Listenerklasse zum Behandeln von Mausklicks.
Benutzen Klassen aus dem Java API um diese Aufgabe zu lösen.

Siehe Diagramm:

 Listener-Hierarchie

Implementieren Sie die Klasse MeinMausListener. Die Klasse soll auf die Ereignisse MousePressed und MouseReleased reagieren.
Welche Klasse bzw. Schnittstelle wählen Sie um den Implementierungsaufwand minimal zu halten?
Wählen Sie den besten Methodenkopf (ankreuzen):.

  1. public class MeinMausListener extends MouseMotionListener
  2. public class MeinMausListener implements MouseMotionListener 
  3. public class MeinMausListener extends MouseListener 
  4. public class MeinMausListener implements MouseListener 
  5. public class MeinMausListener extends MouseAdapter 
  6. public class MeinMausListener implements MouseAdapter 
  7. public class MeinMausListener extends EventListener 
  8. public class MeinMausListener implements EventListener 

Welche andere Option ist die nächstbeste, aber suboptimal?

Warum ist diese Option suboptimal?

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2+2 Minuten

 

Antwort zu Frage 9: Innere und anonyme Klassen

Man kann sie direkt in der Klasse implementieren die sie exklusiv benötigen.
Dadurch benötigt man weniger Klassen.
Man belegt den Namensraum des Pakets nicht unnötig mit Klassennamen.
Man kann auf die Variablen und Methoden der umgebenden Klasse/Objekt zugreifen.

 

javafrage Fri, 01/25/2013 - 09:50

Anonymous (not verified)

Wed, 02/18/2015 - 18:27

Fehlt nach der "divide: geschafft" nicht "divide: after"? Bei der 2.54 steht es noch.

Sie haben haben sich das sehr genaue angeschaut. Gute Sache!

Durch das Werfen (Kommando throw) der IllegalArgumentException wird die Methode divide() abgebrochen da diese Ausnahme nicht in der Methode gefangen wird. "Divide after" wird nicht mehr erreicht.
Das Hinterhältige diese Aufgabe besteht darin, dass die Sonderregel "finally Blöcke werden immer ausgeführt" zum tragen kommt.
"divide: geschafft" wird also noch ausgeführt obwohl das Laufzeitsystem auf dem schnellsten Weg die Methode divide() verlassen möchte.
Ihre Frage hat eine gute Detaildiskussion angeregt. Danke!

11 Benutzung innerer Klassen

11 Benutzung innerer Klassen

Warum ist die Benutzung einer inneren Klasse nützlich?
Nennen Sie mindestens zwei Gründe.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

 

Antwort zu Frage 10: Implementieren einer Listenerklasse

 Listener-Hierarchie

Möglichkeiten

  1. public class MeinMausListener extends MouseMotionListener
  2. public class MeinMausListener implements MouseMotionListener 
  3. public class MeinMausListener extends MouseListener 
  4. public class MeinMausListener implements MouseListener 
  5. public class MeinMausListener extends MouseAdapter 
  6. public class MeinMausListener implements MouseAdapter 
  7. public class MeinMausListener extends EventListener 
  8. public class MeinMausListener implements EventListener 

Lösung 5 hat den niedrigsten Implementierungsaufwand

Lösung 4 ist korrekt aber suboptimal. Man muss alle Methoden implementieren.

javafrage Mon, 03/17/2014 - 08:40

12 Verwendung anonymer innerer Klassen

12 Verwendung anonymer innerer Klassen

In welchem Fall bietet sich die Verwendung einer anonymen, inneren Klasse an?
Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 11: Benutzung innerer Klassen

  1. Der Klassennamensraum wird nicht unnötig benutzt
  2. Man kann auf die lokalen Attribute des Objekts der äusseren Klasse zugreifen

 

javafrage Mon, 03/17/2014 - 08:47

13 Swing: Komponenten und Container

13 Swing: Komponenten und Container
  • Was sind Komponenten in Swing?
    • Geben Sie eine kurze Erklärung
  • Was sind Container in Swing?
    • Geben Sie eine kurze Erklärung und erläutern Sie die Beziehung zwischen Containern und Komponenten.
  • Nennen Sie zwei Klassen die Container sind!

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2+2 Minuten

 Antwort zu Frage 12: Verwendung anonymer innerer Klassen

Man kann sehr effizient Klassen implementieren, die nur eine Methode besitzen und nur an genau einer Stelle benötigt werden um eine Schnittstelle oder eine abstrakte Klasse zu implementieren.

javafrage Sun, 03/01/2015 - 10:45

14 Layoutmanager, Komponenten, Container

14 Layoutmanager, Komponenten, Container

In welcher Beziehung stehen Layoutmanager zu Komponenten und Containern?

Nennen Sie drei Layoutmanager mit den denen Sie die horizontale Anordnung dreier Komponenten erzwingen können.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+3 Minuten

Antwort zu Frage 13: Swing; Komponenten und Container

  • Was sind Komponenten in Swing?
    • Komponenten repräsentieren Teile einer graphischen Benutzerschnittstelle mit denen der Benutzer interagieren kann.
  • Was sind „Container in Swing?
    • Container sind Komponenten die wieder andere Komponenten enthalten können.
  • Nennen Sie zwei Klassen die Container sind
    • JPanel
    • JFrame

 

 

javafrage Sun, 03/01/2015 - 10:55

15 Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

15 Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

Nennen Sie drei Vorteile die eine innere Klasse bei der Swing-Ereignisbehandlung im Gegensatz zu einer normalen Klasse für den Entwickler hat.

Erläutern Sie die Vorteile mit jeweils einem Satz.

Wann ist es vorteilhaft eine anonyme innere Klasse in Gegensatz zu einer inneren Klasse mit Namen zu verwenden? Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3+2 Minuten

 

Antwort zu Frage 14: Layoutmanager, Komponenten, Container

In welcher Beziehung stehen Layoutmanager zu Komponenten und Containern?

  • Layoutmanager erlauben die Anordnung von Komponenten in Containern zu konfigurieren.

Nennen Sie drei Layoutmanager mit den denen Sie die horizontale Anordnung dreier Komponenten erzwingen können.

  • BoxLayoutmanager
  • GridLayoutmanager
  • BorderlayoutManager

 

javafrage Sat, 03/21/2015 - 12:57

Anonymous (not verified)

Thu, 05/16/2019 - 08:23

Hallo,

in der Frage 15, 3 Satz sollte wohl anstelle von "Gegen" "Geben" stehen :)

16 Beurteilung von grafischen "Heavyweight" GUI Implementierungen

16 Beurteilung von grafischen "Heavyweight" GUI Implementierungen

Nennen Sie jeweils zwei Vorteile und zwei Nachteile einer grafischen „Heavyweight“ Implementierung wie AWT im Vergleich zu Swing.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 15: Vorteile innerer und anonymer innerer Klassen bei der Swing Ereignisbehandlung

  1. Die Klassen liegen automatisch im gleichen Paket
  2. Es ist ein Zugriff auf die privaten Attribute der äusseren Klasse möglich
  3. Man belegt keine unnötigen Namen im Namensraum des Pakets der äusseren Klasse

Man nutzt eine anonyme innere Klasse wenn man genau eine Stelle im Code hat an der sie implementiert werden muss.

 

javafrage Sat, 01/24/2015 - 11:13

Anonymous (not verified)

Thu, 05/16/2019 - 08:25

Hallo,

In der Antwort zur Frage 15, sollte wohl aus dem englischen "when" ein "wenn" werden #denglisch :)

17 Vor- und Nachteile von grafischen Lightweight-Implementierungen

17 Vor- und Nachteile von grafischen Lightweight-Implementierungen

Nennen Sie jeweils zwei Vorteile und zwei Nachteile einer grafischen „Lightweight“ Implementierung wie Swing im Vergleich zu AWT.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 16: Beurteilung von grafischen "Heavyweight" GUI Implementierungen

Vorteile

  1. Sie nutzen optimal die Betriebssystemresourcen
  2. Sie behalten das Look & Feel Ihrer Plattform
  3. Das Betriebssystem kennt alle Resourcen und kann sie optimal koordinieren. Bsp. Ein Menü welches andere Fenster verdeckt kann vollständig angezeigt werden

Nachteile

  1. Die Implementierung is plattformabgängig
  2. Man kann keine Elemente verwenden die die Platform nicht kennt. Bsp. Windows kennt das Ereignis  „Mouse over Button“ nicht.

 

javafrage Sun, 01/25/2015 - 10:23

18 Reagieren auf Ereignisse einer Swing Benutzeroberfläche

18 Reagieren auf Ereignisse einer Swing Benutzeroberfläche
  • Nennen den englischen Begriff bzw. den Namen der Javaschnittstellen mit denen man auf Ereignisse in einer Swing-Benutzeroberfläche reagiert.
  • Wie arbeiten diese Objekte mit den grafischen Objekten zusammen um Ereignisse auszuwerten? Geben Sie eine Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1 + 3 Minuten

Antwort zu Frage 17: Vor- und Nachteile von grafischen Lightweight-Implementierungen

Vorteile

  1. plattformunabhängig
  2. man kann das gewünschte Layout besser kontrollieren

Nachteile

  1. Plattformoptimierungen werden nicht unbedingt unterstützt. Bsp. 3D Beschleunigung
  2. ungewohntes „Look & Feel“ auf der Gastplattform

 

javafrage Sun, 01/25/2015 - 10:34

19 Besonderheiten anonymer, innerer Klassen und deren Verwendung

19 Besonderheiten anonymer, innerer Klassen und deren Verwendung

Was ist das besondere an anonymen, inneren Klassen? Wann ist die Benutzung einer anonymen inneren Klasse die beste Lösung. Nennen Sie mindestens zwei Gründe.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+4 Minuten

Antwort zu Frage 18: Reagieren auf Ereignisse einer Swing Benutzeroberfläche

Das Listenerobjekt wurde gegen das Ereignis des graphischen Objekts registriert. Das graphische Objekt ruft beim entsprechenden Ereignis das Listenerobjekt auf. Das Listerobjekt enthält die Implementierung die auf das Ereignis reagiert.

javafrage Sat, 02/13/2016 - 16:31

20 Swing Toplevel Container

20 Swing Toplevel Container
  • Nennen Sie mindesten 2 Toplevel Container die man in Swing benutzt um grafische Benutzeroberflächen zu entwickeln. 
  • Welchen dieser Container würden Sie wählen wenn Sie eine typische Textverarbeitungsanwendung implementieren sollen? Ihre Anwendung soll mehrere Dokumente in mehreren Fenstern verwalten können
  • Welche weiteren nützlichen Eigenschaften hat dieser Container für Ihre Textverarbeitungsanwendung? Nennen Sie Eine!

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2+1+1
Schwierigkeitsgrad mittel
Zeit 2+1+1 Minuten

Antwort zu Frage 19: Besonderheiten anonymer, innerer Klassen und deren Verwendung

Sie haben keinen expliziten Namen. Man verwendet sie wenn es genau eine Stelle im Code gibt an der man Objekte dieser Klasse erzeugen muss.

  1. Es gibt nur eine Stelle an der diese Klasse benötigt wird
  2. Man belastet den Namensraum der Klassen weniger da man keinen Namen vergeben muss
javafrage Sun, 03/12/2017 - 18:32

Anonymous (not verified)

Thu, 05/16/2019 - 17:58

Frage 20, 2. Stichpunkt, 2 Satz:

1. sollte entweder das Fragezeichen weg, oder der Satz soll zu einer Frage umbenannt werden.
2. anstelle von "könne" "können"

21 Definition Layoutmanager mit Beispiel

21 Definition Layoutmanager mit Beispiel

Was sind Layout-Manager in Swing? (Definition)

Sie sollen in Swing ein Schachbrett implementieren und Visualisieren. Welchen Layout-Manager wählen Sie?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+1 Minuten

Antwort zu Frage 20: Swing Toplevel Container

Nennen Sie mindesten 2 Toplevel Container die man in Swing benutzt um grafische Benutzeroberflächen zu entwickeln:

  • JFrame
  • JApplet
  • JDialog
  • JWindow

Welchen dieser Container würden Sie wählen wenn Sie eine typische Textverarbeitungsanwendung implementieren sollen. Ihre Anwendung soll mehrere Dokumente in mehreren Fenstern verwalten könne?

  • JFrame

Welche weiteren nützlichen Eigenschaften hat dieser Container für Ihre Textverarbeitungsanwendung? Nennen Sie eine:

  • Man kann Menüleisten konfigurieren.

Ein Layout-Manager ist ein Objekt, welches Methoden bereitstellt, um die grafische Repräsentation verschiedener Komponenten innerhalb eines Container-Objektes anzuordnen

javafrage Sun, 03/12/2017 - 18:47

22 Anonyme, innere Klasse implementieren

22 Anonyme, innere Klasse implementieren

Implementieren Sie eine innere, anonyme Klasse in der main() Methode der Klasse Rahmen.

  • Die Klasse wird aus der Klasse Test spezialisiert
  • Die Methode result() wird überschrieben. Sie soll den Wert 17 zurückgeben.
  • Weisen Sie das neue Objekt auf die vorgebene Referenz t zu.
public class Test { 
   public int result() {return 3; } 
} // Ende Klasse Test 

public class Rahmen { 
   public static void main (String[] args)
  { // hier implementieren: 
      Test t = new                               //Ab hier implementieren





  } // Ende main Methode
} // Ende Klasse Rahmen 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 21: Definition Layoutmanager mit Beispiel

Ein Layout-Manager ist ein Objekt, welches Methoden bereitstellt, um die grafische Repräsentation verschiedener Komponenten innerhalb eines Container-Objektes anzuordnen 

GridLayout. Mit diesem Layout kann man ein zweidimensionales Feld von Komponenten organisieren.

Die Antwort zu Frage 22 finden Sie viel weiter unten...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 22: Anonyme, innere Klasse implementieren

public class Test { 
   public int result() {return 3; } 
} // Ende Klasse Test 

public class Rahmen { 
   public static void main (String[] args)
  { // hier implementieren: 
      Test t = new Test() {            public int result () {return 17;}            } // ende innere Klasse
  } // Ende main Methode
} // Ende Klasse Rahmen 
holodoctor Sat, 03/25/2017 - 14:35

Fragen zu generischen Typen

Fragen zu generischen Typen javafrage Sun, 03/19/2017 - 12:15

1. Generics: Typprüfung

1. Generics: Typprüfung

Die generische Klasse Punkt hat eine main() Methode mit einer Reihe von Fehlern.
Kommentieren im Quellcode jede Zeile aus die der Übersetzer nicht übersetzt.

  • Schreiben Sie hierzu ein Kommentarzeichen („//“) direkt vor die inkorrekte Zeile im Quellcode.
  • Geben Sie hinter der fehlerhaften Zeile eine kurze Erklärung warum die Zeile inkorrekt ist.

Beispiel:

// int i = null;// null ist ein Referenztyp der nicht zu int passt

Die Klasse Punkt:

public class Punkt<T extends Number> {

public T x;
public T y;

public Punkt(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] args) {
Punkt<Double> k11;
Punkt<Double> k12;
Punkt<Integer> k21;
Punkt<Integer> k22;
Punkt<Number> k41;
Punkt<Number> k42;
Punkt k55;
Punkt k66;

k11 = new Punkt<Double>(2.2d, 3.3d);
k21 = new Punkt<Integer>(2, 3);
k31 = new Punkt<String>("11","22");
k41 = new Punkt<Number>(2l, 3l);

k41 = new Punkt<Number>(4.4d, 5.5f);
k11 = new Punkt<Double>(3.3f,9.9d);

Punkt<?> k99;
k99 = k11;
k99 = k21;
k99 = k31;

k12 = k11;
k12 = k21;
// ...
k55 = new Punkt<Number>(7.7f, 8.8f);
k66 = new Punkt(7.7f, 8.8f);
}
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten
javafrage Wed, 02/01/2012 - 08:28

2. Generics: Typprüfung

2. Generics: Typprüfung

Die generische Klasse Flaeche hat eine main() Methode mit einer Reihe Fehlern. Kommentieren im Quellcode jede Zeile aus, die der Übersetzer nicht übersetzt.

  • Schreiben Sie hierzu ein Kommentarzeichen („//“) direkt vor die inkorrekte Zeile im Quellcode.
  • Geben Sie hinter der fehlerhaften Zeile eine kurze Erklärung warum die Zeile inkorrekt ist.

Beispiel:

// int i = null;// null ist ein Referenztyp der nicht zu int passt
Quellcode Beschreibung der Fehler
package Kurs2.Generics;

public class Flaeche<T extends Number> {
public T x;
public T y;

public Flaeche(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] a) {
Flaeche<Double> f1;
Flaeche<Double> f2;
Flaeche<Integer> f3;
Flaeche<Integer> f4;
Flaeche<Number> f5;
Flaeche<Number> f6;
Flaeche f7;
Flaeche f8;
Flaeche<?> f9;

f1 = new Flaeche<Double>(2.2d,3.3d);
f3 = new Flaeche<Integer>(2, 3);

f2 = f1;
f2 = f3;

f9 = new Flaeche<String>("11","22");
f5 = new Flaeche<Number>(2l, 3l);
f5 = new Flaeche<Number>(4.4d, 5.5f);
f1 = new Flaeche<Double>(3.3f,9.9d);
f7 = new Flaeche(2.2f,3.3f);
f7 = new Flaeche<Number>(7.7f, 8.8f);
f8 = new Flaeche(7.7f, 8.8f);

f9 = f1;
f9 = f2;
f1 = f9;
}
}
 

 

 

 

 

 

 

 

 

 

 

 

 

Ab hier ist mit Fehlern zu rechnen:



















 

Die Antworten finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 1. : Generics, Typprüfung

public class Punkt<T extends Number> {
   public T x;
   public T y;
 
   public Punkt(T xp, T yp) {
    x = xp;
    y = yp;
   }

public static void main(String[] args) {
   Punkt<Double> k11;
   Punkt<Double> k12;
   Punkt<Integer> k21;
   Punkt<Integer> k22;
   Punkt<Number> k41;
   Punkt<Number> k42;
   Punkt k55;
   Punkt k66;
 
   k11 = new Punkt<Double>(2.2d, 3.3d);
   k21 = new Punkt<Integer>(2, 3);
   //k31 = new Punkt<String>("11","22"); Variable wurde nicht deklariert
   k41 = new Punkt<Number>(2l, 3l);
 
   k41 = new Punkt<Number>(4.4d, 5.5f);
   //k11 = new Punkt<Double>(3.3f,9.9d); 3.3.f ist ein Float und kein Double wie gefordert
 
   Punkt<?> k99;
   k99 = k11;
   k99 = k21;
   //k99 = k31; k31 wurde nicht deklariert
 
   k12 = k11;
   //k12 = k21; k12 hat Parameter Double, k21 hat Parameter Integer
   ...
   k55 = new Punkt<Number>(7.7f, 8.8f);
   k66 = new Punkt(7.7f, 8.8f);
   }
}
javafrage Tue, 01/01/2013 - 13:58

3 "Upper Bound Wildcards" anwenden

3 "Upper Bound Wildcards" anwenden

Nutzen Sie das Konzept einer „Upper bound wildcard“ um die generische Klasse Koordinate zu deklarieren, die man nur für die Javaklassen Byte, Float, Integer, Short, Long, Double konfigurieren kann.

Anbei ein Bild der Javaklassenhierarchie:

Klassenhierarchie Number

Vervollständigen Sie den Kopf der Klasse Koordinate:

public class Koordinate

{ // Rumpf ist nicht relevant für diese Aufgabe

}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

 

 

Antwort zu Frage 2. : Generics, Typprüfung

Quellcode Beschreibung der Fehler
package Kurs2.Generics;

public class Flaeche<T extends Number> {
public T x;
public T y;

public Flaeche(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] a) {
Flaeche<Double> f1;
Flaeche<Double> f2;
Flaeche<Integer> f3;
Flaeche<Integer> f4;
Flaeche<Number> f5;
Flaeche<Number> f6;
Flaeche f7;
Flaeche f8;
Flaeche<?> f9;

f1 = new Flaeche<Double>(2.2d,3.3d);
f3 = new Flaeche<Integer>(2, 3);

f2 = f1;
//f2 = f3;

//f9 = new Flaeche<String>("11","22");
f5 = new Flaeche<Number>(2l, 3l);
f5 = new Flaeche<Number>(4.4d, 5.5f);
//f1 = new Flaeche<Double>(3.3f,9.9d);
f7 = new Flaeche(2.2f,3.3f);
f7 = new Flaeche<Number>(7.7f, 8.8f);
f8 = new Flaeche(7.7f, 8.8f);

f9 = f1;
f9 = f2;
//f1 = f9;
}
}

 

 

 

 

 


 

 

 






 

 

Ab hier ist mit Fehlern zu rechnen: 
Man darf keine Instanziierung von
Integer auf Double zuweisen
String ist keine Spezialisierung von Number


3.3f wird durch Autoboxing zu Instanz
von Float. Float leitet nicht aus
der Klasse Double ab

 



f9 muss ein Flaeche<Double> sein.
Keine sichere Zuweisung
 

javafrage Sun, 03/19/2017 - 12:05

4. Antwort zu Frage 3

4. Antwort zu Frage 3
public class Koordinate <T extends Number>
 { // Rumpf der Klasse. Er ist unbedeutend in dieser Aufgabe }
javafrage Sun, 03/19/2017 - 12:47

Fragen zur Nebenläufigkeit (Multithreading)

Fragen zur Nebenläufigkeit (Multithreading) holodoctor Tue, 03/21/2017 - 08:25

1 Nebenläufigkeit in einem Javaprogramm (Threading)

1 Nebenläufigkeit in einem Javaprogramm (Threading)

Bestimmen Sie welcher Code in welchem Thread ausgeführt wird.
Gegeben sei die Klasse ThreadTest1 die mit ihrer main() Methode als Programm gestartet wird :

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join();
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}

Schreiben die Konsolenausgaben des Programms auf. Gehen Sie davon aus, dass der Aufruf von Thread.currentThread() abhängig vom laufenden Thread eine der drei Zeichenketten ausgibt:
‘main’ wenn das Programm im Hauptthread ist (Anwendungsstart)
‘t1’ wenn es im Thread arbeitet welcher zur Referenz t1 gehört
‘t2’ wenn es im Thread arbeitet welcher zur Referenz t2 gehört

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten
javafrage Tue, 02/14/2012 - 10:07

2 Die Methode Thread.join()

2 Die Methode Thread.join()

Was bewirkt die Befehlszeile t1.join() im folgenden Programm?
Geben Sie eine kurze Erklärung.

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zur Frage 1: Threading

Hinweis: Der Quellcode von Frage 2.16 ist identisch zum Quellcode der Frage 2.17 auf dieser Seite oben.

Das Programm produziert die folgende Konsolenausgabe:

main:Anfang main
run: main
run: t1
main:Ende main

Der Thread t2 wird zwar erzeugt aber nie gestartet.

 

javafrage Wed, 02/15/2012 - 08:24

3 Prozesse und Threads

3 Prozesse und Threads

Was ist die Beziehung zwischen einem Thread und einem Prozess?

Was haben Sie gemeinsam ?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zur Frage 2: Die Methode Thread.join()

Der Haupthread (main) wartet bis der Thread t1 beendet wird bevor er mit der Abarbeitung fortfährt.

Das Beispiel zur Aufgabe:

public class ThreadTest1 extends Thread{
   public void run() {
     System.out.println("run: " + Thread.currentThread());
   }
 
public static void main(String[] args) {
System.out.println("main: Anfang "+ Thread.currentThread());
ThreadTest1 t1= new ThreadTest1();
ThreadTest1 t2= new ThreadTest1();
t1.run();
t1.start();
try {
t1.join(); // Was bewirkt diese Programmzeile?
} catch( InterruptedException i) {
}
System.out.println("main: Ende "+ Thread.currentThread());
}
}
javafrage Thu, 02/16/2012 - 08:41

4 Thread.start() und Thread.run()

4 Thread.start() und Thread.run()

Die Javaklasse Thread zum nebenläufigen Programmieren besitzt eine Methode start() und eine Methode run().
Was wozu dienen diese beiden Methoden ?

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zur Frage 3: Prozesse und Threads

Ein Thread ist ein Teil eines Prozess. Er hat einen eigenen Programmzeiger und einen eigenen Stack (Stapel). Er teilt sich den Hauptspeicher mit dem Prozess.

javafrage Wed, 01/09/2013 - 09:09

Anonymous (not verified)

Tue, 06/04/2019 - 11:31

Hallo,

in der Antwort zur Frage 3, muss "ist" anstelle dem englischen "is" stehen :)

Gruß

5 Zustände eines Java-Thread

5 Zustände eines Java-Thread

 Nennen Sie mindestens 4 der 5 Zustände die ein Java-Thread besitzen kann.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 4: Thread.start() und Thread.run()

Antwort Methode start() :

  • Die Methode start() überführt einen Thread in den Zustand „ready to run“. Dies bedeutet, dass er mit der Ausführung beginnen kann

Antwort Methode run():

  • In der Methode run() steht der Code den der Thread ausführen soll. Er wird ausgeführt nachdem der Thread mit der Methode start() gestartet wurde.

 

javafrage Wed, 01/09/2013 - 09:16

6 Zustände von Threads

6 Zustände von Threads

Die Klasse Thread besitzt Methoden mit denen der Entwickler die verschiedenen Zustände eines Threads beeinflussen kann. Die Methoden die die Zustandsübergänge bewirken, sind zur Orientierung gegeben. Tragen Sie Namen der vier Zustände in das Diagramm ein!

 Zustandsübergänge von Threads

Die Lösung dieser Aufgabe finden Sie hier im Skript.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

 

Antwort zu Frage 5: Zustände eines Java-Thread

  1. new: Der Thread wurde mit dem new Operator erzeugt. Er befindet sich im Anfangszustand. Auf seine Daten kann man zugreifen. Er ist noch nicht ablauffähig.
  2. ready-to-run: Der Thread ist lauffähig und wartet auf eine Prozessorzuweisung
  3. running: Der Thread hat einen Prozessor und führt das Programm aus
  4. blocked: Der Thread wartet auf Ressourcen
  5. dead: Der Thread kann nicht wieder gestartet werden
javafrage Sat, 03/21/2015 - 16:48

7 Schützen mit dem Schlüsselwort "synchronized"

7 Schützen mit dem Schlüsselwort "synchronized"

Nennen Sie zwei Javakonstrukte die Sie mit dem Schlüsselwort synchronized schützen können. Was bedeutet „schützen“ im Kontext von Multithreading in Java? Geben Sie eine kurze Erklärung

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 6: Zustände von Threads

Zustandsübergänge von Threads

javafrage Sat, 02/13/2016 - 18:51

8 Kritischer Pfad

8 Kritischer Pfad

Was ist ein kritischer Pfad/Abschnitt? (Definition)

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 7: Schützen mit dem Schlüsselwort "synchronized"

  1. Methoden
  2. Blöcke

Schützen bedeutet, dass nur ein Thread einen kritischen Pfad (Programmcode) bearbeiten darf. Hier kann man gewährleisten, dass eine Anzahl von Operationen auf Daten nur von einem Thread ausgeführt werden können.

javafrage Sat, 03/25/2017 - 17:52

9 Was schützt man mit dem Schlüsselwort "synchronize"

9 Was schützt man mit dem Schlüsselwort "synchronize"

Welche zwei Arten von kritischen Pfade kann man in Java mit dem Schlüsselwort synchronize schützen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Kritischer Pfad

Ein kritischer Abschnitt ist eine Folge von Befehlen, die ein Thread nacheinander vollständig abarbeiten muss, auch wenn er vorübergehend die CPU and einen anderen Thread abgibt. Kein anderer Thread darf einen kritischen Abschnitt betreten, der auf die gleichen Variablen zugreift, solange der erstgenannte Thread mit der Abarbeitung der Befehlsfolge noch nicht fertig ist. (siehe: Goll, Seite 744)

javafrage Sat, 03/25/2017 - 17:58

10 Starten von Threads

10 Starten von Threads

Vervollständigen Sie die unten aufgeführte Klasse so, dass die Ausgabe „Hurra ich bin ein eigener Thread“ in einem anderen Thread als die main() Methode aufgerufen wird.

  • Vervollständigen Sie die main() Methode damit sie lauffähig wird
  • Implementieren Sie eine neue Methode um den Befehl mit der Ausgabe in einem eigenen Thread aufzurufen:
public class myThread extends Thread { 
   

      // mit eigener Methode umhüllen 
      System.out.println("Hurra ich bin ein eigener Thread"); 
   
  }

  public static void main(String[] args) { 
     
 
 
  }  // Ende main Methode 
} // Ende der Klasse myThread

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 9: Was schützt man mit dem Schlüsselwort "synchronize"

  1. Methoden
  2. Blöcke
javafrage Sat, 07/13/2019 - 10:35

11 Klassen aus dem Concurrency Package

11 Klassen aus dem Concurrency Package
  • Welche Klasse aus dem Concurrency-Paket verwenden Sie wenn mit mehreren Threads schreibend auf eine ganze Zahl zugreifen müssen?
  • Warum verwenden Sie diese Klasse?
  • Wie ist das Laufzeitverhalten dieser Klasse im Vergleich zum Basistyp int?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+2+2 Minuten

Antwort zu Frage: 10 Starten von Threads

public class myThread extends Thread { 
   public void run() { 

      // mit eigener Methode umhüllen 
      System.out.println("Hurra ich bin ein eigener Thread"); 
   
  }

  public static void main(String[] args) { 
     myThread t1 = new myThread();
      t1.start(); } 
 
  }  // Ende main Methode 
} // Ende der Klasse myThread
javafrage Sat, 07/13/2019 - 10:43

12 Parallisieren im Concurrency Package ohne Rückgabewerte

12 Parallisieren im Concurrency Package ohne Rückgabewerte

Sie möchten mit dem Concurrency-Paket parallel arbeiten. Sie benötigen keine Rückgabewerte. In welcher Klasse spezialisieren sie am besten und in welcher Methode implementieren Sie Ihren Algorithmus?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage: 11 Klassen aus dem Concurrency Package

  • AtomicInteger
  • Sie erlaubt das Testen und Schreiben in einer atomaren Operation. Nur ein Thread kann diese Operation gleichzeitig ausführen.
  • Sie ist deutlich langsamer, da Sie eine Klasse ist und der Zugriff durch Semaphore bzw. Monitore geschützt werden muss.
javafrage Sat, 07/13/2019 - 10:55

13 Klasse ForkJoinPool

13 Klasse ForkJoinPool

Was sind die Vorteile der Klasse ForkJoinPool auf dem Concurrency-Paket? Die Antwort finden Sie weiter unten auf dieser Seite.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage: 12 Parallelisieren im Concurrency Package ohne Rückgabewerte

  • Klasse: RecursiveAction
  • Methode: compute()

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage: 13 Klasse ForkJoinPool

Es wird ein Pool erzeugt, der so viele Software-Threads hat wie der Rechner Hardware-Threads.

Dadurch werden die Hardware-Threads optimal verwendet und das Betriebssystem hat weniger Stress mit dem Zuordnen der ausführbaren Threads.

javafrage Sat, 07/13/2019 - 10:58

Fragen zu Algorithmen

Fragen zu Algorithmen

Bonusfrage aus dem Web...

javafrage Tue, 03/21/2017 - 17:34

1 Quicksort

1 Quicksort

Führen Sie einen Durchlauf des Quicksorts zum Teilen des ersten Intervalls manuell durch. Teilen Sie ein gegebenes Sortierintervall (siehe Aufgabe „Vorher“) nach den Regeln des Quicksorts in zwei Unterintervalle die noch sortiert werden müssen.

  • Sortieren Sie aufsteigend 
  • Wählen Sie das Pivotelement ganz rechts im Intervall. Das Pivotelement soll zum kleineren Intervall gehören.
  • Markieren Sie das Pivotelement im „Vorher“ Diagramm mit einem Pfeil von unten (siehe Beispiel).
  • Wenden Sie die Regeln des Quicksorts an. Zeichnen Sie zweiseitige Pfeile im "Vorher" Diagram ein, um die notwendigen Vertauschungen zu markieren.
  • Zeichnen Sie mit einem zweiseitigen Pfeil die nötige Vertauschung des Pivotelements im "Vorher" Diagramm ein.
  • Tragen Sie alle neuen Werte im "Nachher" Diagramm ein.
  • Zeichnen sie die beiden neuen zu sortierenden Intervalle mit eckigen Linien im „Nacher“ Diagramm ein.

Quicksort Array

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten
javafrage Thu, 02/02/2012 - 09:12

2 Quicksort, Pivotelement

2 Quicksort, Pivotelement

Wählt man beim Quicksort das Pivotelement immer am gleichen Rand des Intervals, so gibt es Zahlenreihen die nur sehr ineffizient sortiert werden.
Für welche Zahlenreihen trifft dies zu? Geben Sie ein Beispiel an.

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Quicksort

Quicksort Lösung

 

javafrage Thu, 02/02/2012 - 18:02

Anonymous (not verified)

Tue, 06/02/2015 - 14:13

Wir sind nach mehreren anläufen jedes mal auf die Lösung "2 1 3 4 5 9 8 7 6" gekommen. Warum ist bei Ihnen die 3 und 4 bzw. die 9 und 8 vertauscht?

Für die Behandlung des Pivotelements gibt es unterschiedliche akzeptable Strategien. In der Musterlösung wurde wie folgt vorgegangen:

  • Beginne links im Sortierinterval und merke das erste Element welches größer-gleich als 5 ist.
    • Dies ist die 9. Halte mit der Suche an
  • Beginne rechts im Sortierinterval und suche (fallend) das erste Element welches kleiner als 5 ist.
    • Dies ist die 4. Halte mit der Suche an.
  • Tausche 4 mit 9

Setze die Strategie des Suchens von links und rechts fort

  • Vergleiche von links kommend das nächste Element (die 8) ob es größer gleich 5 ist und halte dann an.
  • Vergleiche von rechts kommend, fallend das nächste Element (die 3) ob sie kleiner ist als die 5 und halte dann an
  • Tausche 8 mit 3

Jetzt kommt es zum "Endspiel". Die beiden Zeiger der Suche von links und rechts treffen sich. Hier gibt es wieder Freiheitsgrade.

  • Man kann die 6 mit der 5 tauschen und dann die 5 aus den zukünftigen Suchintervallen ausschließen
  • Falls der Wert auf der fünften Position kleiner als das Pivotelement gewesen wäre hätte man es stehen lassen und die fünfte Position in das neue linke Sortierintervall einbezogen.

 

3 Ungünstige Zahlenreihen für den Quicksort

3 Ungünstige Zahlenreihen für den Quicksort

Warum funktioniert das „Teile und Herrsche“ Prinzip des Quicksorts bei unvorteilhaften Zahlenreihen nicht gut?

Beispiele sind die folgenden Zahlenreihen

  • 1,2,3,4,5
  • 5,4,3,2,1

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 2: Quicksort, Pilotelement

Aufsteigende oder fallende Zahlenfolgen. z. Bsp. 1,2,3,4,5 oder 5,4,3,2,1

javafrage Fri, 02/03/2012 - 10:55

4 Heapsort, Baumpräsentation, Heapbedingung

4 Heapsort, Baumpräsentation, Heapbedingung

Zeigen Sie wie der logische Baum eines Heapsorts für ein gegebenes Feld von Schlüsseln aussieht.
Tragen Sie die Schlüssel und den Feldindex (die Feldposition) der Feldrepräsentation in die Heappräsentation unten ein.

Im Beispiel unten ist auf der Position 1 der Schlüssel 9 zu finden.
Tragen Sie Positionen und Schlüssel in das vorgegebene Baumdiagramm ein:

Diagramm eines Heapsorts

Gilt die Heapbedingung für diese Folge? Markieren Sie Knoten die die Heapbedingung verletzen.

Die Antworten finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5+2 Minuten

Antwort zu Frage 3: Ungünstige Zahlenreihen für den Quicksort

Weil keine ähnlich großen Teilintervalle entstehen.

Im schlimmsten Fall wird das Teilintervall immer nur um ein Element verkleinert.

Der Aufwand ist dann (n-1)+O(n-2)+...+O(3)+O(2)=O(n2) (Arithmetische Reihe)

Der Aufwand zum Bearbeiten der Teilintervalle kann dann im schlimmsten Fall O(n2) anstatt O (n*log(n)) wie bei ähnlich großen Teilintervallen sein.

javafrage Tue, 01/01/2013 - 16:28

5 Erklärung der Heapbedingung

5 Erklärung der Heapbedingung

Beschreiben in Worten was die „Heapbedingung“ des Heapsorts ist.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 4: Heapsort, Baumpräsentation, Heapbedingung

Diagramm eines Heapsorts

Die Heapbedingung gilt nicht für diese Folge. Sie ist für die Position 4 (Wert 1) verletzt.

javafrage Tue, 01/01/2013 - 17:34

Anonymous (not verified)

Tue, 04/26/2016 - 17:39

hier gibt es einen Fehler mit dem Bild zur Lösung von 2.32
Die "Textantwort" ist aber eigentlich auch ausreichend

6 Komplexitätsbetrachtungen 1

6 Komplexitätsbetrachtungen 1

Welche Komplexität haben die gezeigten Javamethoden?

Gegeben ist das folgende Javaprogramm:

Nr. Quellcode Antwort
 
public class K1 {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
}

 nichts eintragen
 Bsp.
static void algorithmusBsp(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int j = 1; j < n; j++) {
    int k = j * 3;
    }
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n) 
1. 
static void algorithmus1(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int i = 1; i < 1000; i++) {
    int k = i +2;
  }
}
 
 2.
static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    int p = n;
    for (int j = 1; j < p; j++) {
      int k = j - i;
    }
  }
} 
 
 3.
static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      for (int k = 1; k < n; k++) {
        int q = k - j - i;
      }
      int p=0;
        while (p<n) {
          p++;
          int r = n*p;
        }
    }
  }
}          
 
 4.
static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus2(n);
    }
  }
}
            
 
 
}// Ende der Klasse
 Nichts eintragen

 

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 5: Erklärung der Heapbedingung

Das Feld soll aufsteigend sortiert werden.
Jeder Vaterknoten muss größer als beide Unterknoten sein oder auch: jeder Knoten mit dem Index i muss größer als existierende Knoten mit Index 2*i und 2*i+1 sein.

javafrage Mon, 02/13/2012 - 09:42

Anonymous (not verified)

Tue, 06/27/2017 - 11:32

M.E. sind die Aussagen "Jeder Vaterknoten muss größer als beide Unterknoten sein." und "Jeder Knoten mit dem Index i muss größer als existierende Knoten mit Index 2*i und 2*i+1 sein." redundant. Könnten sie das bitte in der Antwort ersichtlich machen?

7 Komplexitätsbetrachtungen 2

7 Komplexitätsbetrachtungen 2

Tragen Sie die Aufwände O(n) für die gegeben Methoden des Javaprogramm ein.

Nr. Quellcode Antwort
 
public class K1 {
private static int groesse = 1000;
public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
for (int i = 1; i < n; i++)
{ int k = i * 2; }
for (int j = 1; j < n; j++)
{ int k = j * 3;}
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
int i = 0;
while (i<1000) {
i++;
int k = i +2;
}
}
 
2.
  static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
int p = n;
for (int j = 1; j < p; j++) {
for (int k = 1; k < n; k++) {
int s = j*k – i;
}
}
}
}
 
3.
  static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k= 0;
while (k<n) {
k++;
int q = k - j - i;
}
int p=0;
while (p<n) {
p++;
int r = n*p;
}
}
}
}
 
4.
  static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
algorithmus2(n);
}
}
}
 
 
 }// Ende der Klasse
 ---

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 6: Komplexitätsbetrachtungen 1

Gegeben ist das folgende Javaprogramm:

Nr. Quellcode Antwort
 
public class K1 {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
}

 nichts eintragen
 Bsp.
static void algorithmusBsp(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int j = 1; j < n; j++) {
    int k = j * 3;
    }
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n) 
1. 
static void algorithmus1(int n) {
  for (int i = 1; i < n; i++) {
    int k = i * 2;
  }
  for (int i = 1; i < 1000; i++) {
    int k = i +2;
  }
}
O(n)+O(1000)=O(n) 
 2.
static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    int p = n;
    for (int j = 1; j < p; j++) {
      int k = j - i;
    }
  }
} 
O(n)*O(n)=O(n2)
 3.
static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      for (int k = 1; k < n; k++) {
        int q = k - j - i;
      }
      int p=0;
        while (p<n) {
          p++;
          int r = n*p;
        }
    }
  }
}          
O(n)*O(n)*[O(n)+O(n)]=O(n3)
 4.
static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus2(n);
    }
  }
}
            

O(n)*[O(1000)*O(algorithmus2)]=

O(n)*O(algorithmus2)=O(n3)

 
}// Ende der Klasse
 Nichts eintragen
javafrage Wed, 01/09/2013 - 08:48

8 Komplexitätsbetrachtungen 3

8 Komplexitätsbetrachtungen 3

Welchen Aufwand O haben die Methoden algorithmus1() bis algorithmus8() des folgenden Programms abhängig vom Übergabeparameter n?

Gehen Sie davon aus, das der Java JIT (Just in Time Compiler) nichts optimiert.

Hinweis: Wie oft werden die jeweiligen Schleifen durchlaufen? Welche Durchläufe sind konstant, welche variabel?

package Kurs2.Sort;

public class Komplexität {

private static int groesse = 1000;

public static void main(String[] args) {
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
algorithmus5(groesse);
algorithmus6(groesse);
algorithmus7(groesse);
}

public static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
}

public static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
int k = j - i;
}
}
}

public static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k = j - i;
}
}
}

public static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
for (int k = 1; k < n; k++) {
int q = k - j - i;
}
}
}
}

public static void algorithmus5(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; i++) {
int k = j - i;
}
for (int j = 1; j < 1000; j++) {
int k = j - i;
}
}
}

public static void algorithmus6(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < i; j++) {
int k = j - i;
}
}
}

public static void algorithmus7(int n) {
for (int i = 1; i < 1000; i++) {
int j = 0;
while (j < 1000) {
j++;
int k = 2 * j;
}
}
}

public static void algorithmus8(int n) {
for (int i = 1; i < n; i++) {
algorithmus1(n);
}
}

} // Ende der Klasse

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 16 Minuten

Antwort zu Frage 7:Komplexitätsbetrachtungen 2

Nr. Quellcode Antwort
 
public class K1 {
private static int groesse = 1000;
public static void main(String[] args) {
algorithmusBsp(groesse);
algorithmus1(groesse);
algorithmus2(groesse);
algorithmus3(groesse);
algorithmus4(groesse);
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
for (int i = 1; i < n; i++)
{ int k = i * 2; }
for (int j = 1; j < n; j++)
{ int k = j * 3;}
}
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
for (int i = 1; i < n; i++) {
int k = i * 2;
}
int i = 0;
while (i<1000) {
i++;
int k = i +2;
}
}
Ofor1(n)+Ofor2(1000)= Ofor1(n)+Ofor2(1) = O(n)
2.
  static void algorithmus2(int n) {
for (int i = 1; i < n; i++) {
int p = n;
for (int j = 1; j < p; j++) {
for (int k = 1; k < n; k++) {
int s = j*k – i;
}
}
}
}
 Ofor1(n)*Ofor2(n)*Ofor3(n) = O(n3)
3.
  static void algorithmus3(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int k= 0;
while (k<n) {
k++;
int q = k - j - i;
}
int p=0;
while (p<n) {
p++;
int r = n*p;
}
}
}
}
Ofor1(n)*Ofor2(n)*(Owhile1(n)+Owhile2(n))
Ofor1(n)*Ofor2(n)*2*Owhile(n)= 2*O(n3) = O(n3
4.
  static void algorithmus4(int n) {
for (int i = 1; i < n; i++) {
for (int j = 1; j < 1000; j++) {
algorithmus2(n);
}
}
}
 Ofor(n)*Ofor2(1000)*Oalgorithmus2(n3) = O(n4)
 
 }// Ende der Klasse
 ---
javafrage Wed, 01/09/2013 - 09:32

Anonymous (not verified)

Wed, 06/27/2018 - 16:31

In der Aufgabenstellung wird nur nach den Algorithmen 1-7 gefragt, in der Lösung sind alle vorhanden.

9 Binäre Suche

9 Binäre Suche

Fügen im folgenden Beispiel eine binäre Suche nach dem vorgegebenen Schlüssel durch. Zeichnen Sie die notwendigen Vergleiche mit Hilfe von Pfeilen wie im Beispiel der sequentiellen Suche ein:

Sequentielle und binäre Suche

Wieviele Vergleiche benötigen Sie bei der binären Suche in der obigen Folge mit 15 Elementen maximal bis der Schlüssel gefunden ist?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3+1 Minuten

Antwort zu Frage 8: Kompexitätsbetrachtungen 3

Quellcode Antworten mit Erklärung
package Kurs2.Sort;
public class Komplexitaet;
  private static int groesse = 1000;

  public static void main(String[] args) {
    algorithmus1(groesse);
    algorithmus2(groesse);
    algorithmus3(groesse);
    algorithmus4(groesse);
    algorithmus5(groesse);
    algorithmus6(groesse);
    algorithmus7(groesse);
  }
 
  public static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int k = i * 2;
    }
  }
Die for-Schleife wird n mal durchlaufen: O(n) 
  public static void algorithmus2(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < 1000; j++) {
       int k = j - i;
      }
    }
  }

Die innere for-Schleife wird 1000 mal durchlaufen:

  • O(1000) = Oinnere(1)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(1)=Oaeussere(n)

Gesamtkomplexität: O(n)

  public static void algorithmus3(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < n; j++) {
        int k = j - i;
      }
   }
  }
Die innere for-Schleife wird n mal durchlaufen: 
  • Oinnere(n)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(n)=Oaeussere(n2)

Gesamtkomplexität: O(n2)

  public static void algorithmus4(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < n; j++) {
        for (int k = 1; k < n; k++) {
          int q = k - j - i;
        }
      } 
    }
  }

Die innere for-Schleife wird n mal durchlaufen:

  • Oinnere(n)

Die mittlere for-Schleife wird n mal durchlaufen:

  • O(n)*Oinnere(n) = Omittlere(n2)

Die äussere for-Schleife wird n mal durchlaufen:

  • O(n)*Omittlere(n2)= Oaeussere(n3)

Gesamtkomplexität: O(n3)
 

  public static void algorithmus5(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < 1000; j++) {
        int k = j - i;
      }
      for (int j = 1; j < 1000; j++) {
        int k = j - i;
      }
    }
  }

Jede der inneren Schleifen wird 1000 mal durchlaufen und hat damit einen konstanten Aufwand

  • Oinnere2(1000)+Oinnere2(1000)= Oinnere2(1)+Oinnere2(1)=Oinnen(1)

Die äussere Schleife wird n mal durchlaufen:

  • O(n)*Oinnen(1)=Oaeussere(n)

Gesamtkomplexität: O(n)

  public static void algorithmus6(int n) {
    for (int i = 1; i < n; i++) {
      for (int j = 1; j < i; j++) {
        int k = j - i;
      }
    }
  }

Jede der inneren Schleifen wird i mal durchlaufen:

  • Oinnen(i)

Die äussere Schleife wird n mal durchlaufen:

  • O(n)*Oinnen(i)

Beide Schleifen haben gemeinsam die Durchläufe 1+2+3... +n = (n-1)n/2 = (n2-n)2

  • O(n)*Oinnen(i)=(O(n2)-O(n))/O(2)=O(n2)/O(1)=Oaussen(n2)

Gesamtkomplexität: O(n2)
Bemerkung: Das Zusammenwirken geschachtelter Schleifen ist nicht trivial. Es müssen alle relevanten Variablen aufgelöst und es muss eine Summenformel entwickelt werden.

   public static void algorithmus7(int n) {
    for (int i = 1; i < 2000; i++) {
      int j = 0;
      while (j < 1000) {
        j++;
        int k = 2 * j;
      }
    }
  }

Die while-Schleife wird 1000 mal durchlaufen. Ihr Aufwand ist konstant:

  • Owhile(1000)=Owhile(1) 

Die for-Schleife wird wird 2000 mal durchlaufen. Ihr Aufwand ist konstant:

  • O(2000)*Owhile(1)=O(1)*Owhile(1)=Ofor(1)

Gesamtkomplexität: O(1)

  public static void algorithmus8(int n) {
    for (int i = 1; i < n; i++) {
      algorithmus1(n);
    }
  }

Die Methode algorithmus1() hat den Aufwand O(n). Siehe weiter oben.

Die for-Schleife wird n mal durchlaufen:

  • O(n)*O(n)=Ofor(n2)

Gesamtkomplexität: O(n2)

} // Ende der Klasse

 

javafrage Mon, 03/17/2014 - 08:19

Anonymous (not verified)

Thu, 05/04/2017 - 06:20

Wie kann ich den an der Aufgabenstellung erkennen das es sich um eine sortierte Folge handelt?

Grüße

Für alle i von Null bis zum höchsten Element der Folge f gilt: fi < fi+1

10 Aufwand binäre Suche und sequentielle Suche

10 Aufwand binäre Suche und sequentielle Suche
  • Welchen Aufwand O() hat die binäre Suche?
  • Welchen Aufwand O() hat die sequentielle Suche?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 9: Binäre Suche

Beispiel einer binären Suche

Man benötigt maximal 4 Vergleiche.

javafrage Mon, 03/17/2014 - 08:27

Anonymous (not verified)

Mon, 05/11/2020 - 19:02

Bei der Binären Suche liegt ein Fehler vor. Es sind lediglich 3 Vergleiche die gemacht werden.

Im ersten Schritt 15 - ist richtig
Im zweiten Schritt muss allerdings die 19 markiert werden anstelle der 21.
Im dritten Vergleichsschritt kommt man dann direkt auf die 23

Viele Grüße!

11 Komplexitätsbetrachtungen 4

11 Komplexitätsbetrachtungen 4

Tragen Sie die Aufwände O(n) für die gegeben Methoden des Javaprogramm ein.

Nr. Quellcode Antwort
 
public class K1 {
   private static int groesse = 1000;
 
   public static void main(String[] args) {
     algorithmusBsp(groesse);
     algorithmus1(groesse);
     algorithmus2(groesse);
     algorithmus3(groesse);
     algorithmus4(groesse);
   } 
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
     for (int i = 1; i < n; i++)
        { int k = i * 2; }
     for (int j = 1; j < n; j++)
        { int k = j * 3;}
   }
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int p = n;
      for (int j = 1; j < p; j++) {
        for (int k = 1; k < n; k++) {
          int s = j*k – i;
        } // end for
      } // end for
    } // end for
  }
 
2.
  static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      int k= 0;
      while (k<n) {
         k++;
         int q = k - j - i;
      }
      int p=0;
      while (p<n) {
          p++;
          int r = n*p;
       } // end while
    } // end for
  } // end for
}
 
3.
  static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
   for (int j = i; j < n; j++) {
    int k=0;
    while (k<1000000) {  
      k++;
      int r = i*j*k;
 } // end while
   } // end for
  } // end for
}
 
4.
  static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus1(n);
    }
  }
}
 
 
 }// Ende der Klasse
 ---

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 10: Aufwand binäre und sequentielle Suche

  • Aufwand O() der binären Suche: O(log(n))
  • Aufwand O() der sequentiellen Suche: O(n)
javafrage Sun, 03/01/2015 - 11:18

12 Bubblesort

12 Bubblesort

Der BubbleSort besteht aus einer äusseren Schleife in der das zu sortierende Intervall jeweils verkleinert wird.
In einer inneren Schleife wird das größte Element als « Bubble » bestimmt. Führen Sie einen solchen Durchlauf einer inneren Schleife an der unten gezeigten Folge durch. Sortieren sie aufsteigend.

Markieren Sie alle notwendigen Vergleiche und Vertauschungen.
Fügen Sie alle Werte in das Diagramm ein
 Diagramm einer Folge die im Bubblsort sortiert werden soll

Welchen Aufwand O() hat der Bubblesort?

In welchem Fall ist ein aufsteigend sortierender Bubblesort ein sehr effizienter Algorithmus?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8+1+1 Minuten

Antwort zu Frage 11: Komplexitätsbetrachtungen 4

Nr. Quellcode Antwort
 
public class K1 {
   private static int groesse = 1000;
 
   public static void main(String[] args) {
     algorithmusBsp(groesse);
     algorithmus1(groesse);
     algorithmus2(groesse);
     algorithmus3(groesse);
     algorithmus4(groesse);
   } 
 Nichts in dieses Feld eintragen!
 Bsp.
  static void algorithmusBsp(int n) {
     for (int i = 1; i < n; i++)
        { int k = i * 2; }
     for (int j = 1; j < n; j++)
        { int k = j * 3;}
   }
Beispiel:
Ofor1(n)+Ofor2(n) = O(n)
1.
  static void algorithmus1(int n) {
    for (int i = 1; i < n; i++) {
      int p = n;
      for (int j = 1; j < p; j++) {
        for (int k = 1; k < n; k++) {
          int s = j*k – i;
        } // end for
      } // end for
    } // end for
  }
Ofor1(n)*Ofor2(n)*Ofor3(n) = O(n3
2.
  static void algorithmus2(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < n; j++) {
      int k= 0;
      while (k<n) {
         k++;
         int q = k - j - i;
      }
      int p=0;
      while (p<n) {
          p++;
          int r = n*p;
       } // end while
    } // end for
  } // end for
}

Ofor1(n)*Ofor2(n)*(Owhile1(n)+Owhile2(n)) =

Ofor1(n)*Ofor2(n)*O(n) =

O(n3

3.
  static void algorithmus3(int n) {
  for (int i = 1; i < n; i++) {
   for (int j = i; j < n; j++) {
    int k=0;
    while (k<1000000) {  
      k++;
      int r = i*j*k;
 } // end while
   } // end for
  } // end for
}

Ofor1(n)*Ofor2(n)*(Owhile1(1000)) =

Ofor1(n)*Ofor2(n) =

O(n2

4.
  static void algorithmus4(int n) {
  for (int i = 1; i < n; i++) {
    for (int j = 1; j < 1000; j++) {
      algorithmus1(n);
    }
  }
}

Ofor1(n)*Ofor2(1000)*Oalgorithmus1(n) =

Ofor1(n)*O(n3) =

O(n4

 
 }// Ende der Klasse
 ---
javafrage Sat, 03/21/2015 - 13:04

13 Komplexitätsbetrachtungen 5

13 Komplexitätsbetrachtungen 5

Ein Algorithmus A und B verarbeiten jeweils n Datensätzen.

  • Algorithmus A benötigt einmalig 50000000 Instruktionen mehr als Algorithmus B beim Starten. Ansonsten ist die Anzahl der Instruktionen pro Datensatz konstant.
  • Algorithmus B benötigt 4 mal mehr Instruktionen pro Datensatz als Algorithmus A

Leiten Sie die beiden Komplexitätsklassen der Algorithmen her.

Vergleichen Sie die beiden Komplexitätsklassen und geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4+4 Minuten

Antwort zu Frage 12: Bubblesort

Bubblesort mit Musterlösung

Welchen Aufand O() hat der Bubblesort ?

O(n2)

In welchem Fall ist ein aufsteigend sortierender Bubblesort ein sehr effizienter Algorithmus?

Bei einer vorsortierten Folge

javafrage Mon, 12/07/2015 - 12:42

14 Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

14 Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

Was ist die Sortiergrenze in der Folge in der durch Sortieren durch Einfügen sortiert wird?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 13: Komplexitätsbetrachtungen 5

k sei der konstante Zeitaufwand der zum verarbeiten eines Datensatzes benötigt wird

OA (n) =O (5000000+k*n)=O (1)+O (n)=OA (n)

OB (n) =OA (4n)= OA (n)

Beide Algorithmen sind in der gleichen Komplexitätsklasse. Der zweite Algorithmus wird bei sehr kleinen Anzahlen etwas schneller sein.

holodoctor Sat, 03/25/2017 - 14:47

15 Sortieren durch Einfügen: Ein Beispiel

15 Sortieren durch Einfügen: Ein Beispiel

Die unten aufgeführte Folge im Diagramm wird aufsteigend sortiert und ist schon teilsortiert. Markieren Sie im Diagramm die Sortiergrenze mit einem Pfeil.

Führen Sie nun einen Durchlauf des Insertionsorts durch.

  • Vergleichen und Tauschen Sie den nächsten Wert solange bis er an der richtigen Stelle steht (3 Min.)
  • Markieren Sie die neue Sortiergrenze mit einem Pfeil (1 Min.)

Hinweis: Markieren Sie eine nötige Vertauschung wie im Beispiel gezeigt.
Tragen Sie dann die neuen Werte in die nächste Zeile ein.
Benutzen Sie dann eine neue Zeile.

Übung Insertionssort

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+4 Minuten

Antwort zu Frage 14: Sortiergrenze beim Insertionsort (Sortieren durch Einfügen)

Die Grenze zwischen der unsortierten und der sortierten Folge

javafrage Sat, 03/25/2017 - 15:02

16 Fragen zum Sortieren durch Einfügen

16 Fragen zum Sortieren durch Einfügen

Ein paar Fragen zum Sortieren durch Einfügen...

  • Welchen Komplexitätsaufwand hat dieser Algorithmus?
  • Nennen Sie zwei Algorithmen aus der Vorlesung die eine bessere Aufwandsklasse besitzen.
  • Welchen Vorteil hat der Insertionsort immer gegenüber den beiden Algorithmen die eine bessere Komplexitätsklasse besitzen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 1+2+2 Minuten

Antwort zu Frage 15 Sortieren durch Einfügen: Ein Beispiel

Lösung zur Aufgabe Soertieren durch EInfügen

Die Antwort zur aktuellen Frage finden Sie viel weiter unten

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 16: Fragen zum Sortieren durch Einfügen

  • Durchschnittlicher Aufwand: Oinsertionsort(n) = O(n2)
  • Effizientere Sortierverfahren
    1. Quicksort
    2. Heapsort
  • Er ist stabil.
javafrage Sat, 03/25/2017 - 15:14

Anonymous (not verified)

Tue, 06/27/2017 - 09:13

Die durchschnittliche Komplexität eines Insertion Sorts ist O(n^2). Wobei beste Komplexität O(n) ist (bei sortierten Listen) und schlechteste O(n^2).

Quelle: bigocheatsheet

Anmerkung: Evtl. liegt hier ein Darstellungsproblem in ihrer Lösung vor und O(n2) meint O(n^2).

Fragen zu Collections

Fragen zu Collections javafrage Wed, 03/22/2017 - 20:20

1 Java Collections Framework: Listen

1 Java Collections Framework: Listen

In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt einer java.util.ArrayList Klasse zu verwenden?

Nennen sie vorteilhafte Szenarien (mindestens 3).

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten
javafrage Sun, 01/29/2012 - 21:54

2 Bewertung der Klasse ArrayList

2 Bewertung der Klasse ArrayList

In welchen Anwendungszenarien ist es von Vorteil die Klasse ArrayList anstatt eines einfachen Feld ( [] Notation) zu verwenden?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Java Collections Framework: Listen

  • Viele Einfügeoperationen in der Mitte der Liste
  • Viele Entfernoperationen in der Mitte der Liste
  • Nur sequentielles Lesen erforderlich
javafrage Tue, 01/31/2012 - 20:42

3 Iterieren über den Typ TreeMap

3 Iterieren über den Typ TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

TreeMap<Double, String> myMap= new TreeMap<Double, String>
myMap.put(3.3d,‘Anton‘);
myMap.put(1.1d,‘Bruno‘);
myMap.put(2.2d,‘Charles‘);

Welche Werte werden beim Iterieren über die Schlüssel von myMap in welcher Reihefolge
ausgegeben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 2: Bewertung der Klasse ArrayList

  • Schnelles, dynamisches Wachsen erforderlich
  • Verkleinern der Datenstruktur muss effizient erfolgen

 

javafrage Tue, 01/31/2012 - 20:52

4 Java Collections: HashSet und TreeSet

4 Java Collections: HashSet und TreeSet

In welchen Fällen ist es von Vorteil eine java.util.HashSet Klasse anstatt einer java.util.TreeSet Klasse zu verwenden?

Nennen sie zwei vorteilhafte Szenarien

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 3: Iterieren über den Typ TreeMap

Double ist der Schlüssel. Das Objekt myMap der Klasse TreeMap ist nach dem Schlüssel sortiert.

  • 1.1d
  • 2.2d
  • 3.3d.
javafrage Fri, 12/28/2012 - 20:55

5 Klasse TreeMap

5 Klasse TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

package Kurs2.K2012;
import java.util.Set;
import java.util.TreeMap; public class CollectionAufgabe
   public static void main(String[] args) {       TreeMap<String, Double> myMap= new TreeMap<String,Double>();       myMap.put("Anton" ,3.3d);       myMap.put("Charles",1.1d);       myMap.put("Bruno" ,2.2d);
      for (String s:myMap.keySet())          System.out.println(s);    } }
  • Welche Werte werden beim Iterieren über myMap in welcher Reihenfolge ausgegeben? 
  • Wird über die Schlüssel oder die Werte der Map iteriert?
Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten + 1 Minute

Antwort zu Frage 4: Java Collections: HashSet und TreeSet

  • man benötigt nur eine unsortierte Menge.
  • man muss sehr viele Einfügungen und Entfernoperationen ausführen.
javafrage Sun, 12/30/2012 - 14:24

6 Java Collections und Generezität

6 Java Collections und Generezität

Die Klassen und Schnittstellen des Java Collection Framework sind generisch. Welchen Vorteil hat dies? (Kurze Erklärung)

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 5: Klasse TreeMap

Konsolenausgabe:

  • Anton
  • Bruno
  • Charles

Es wird über die Schlüssel iteriert

 

 

javafrage Sun, 12/30/2012 - 14:42

7 Vorteile einer LinkedList im Vergleich zu einer ArrayList

7 Vorteile einer LinkedList im Vergleich zu einer ArrayList

In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

Nennen sie zwei vorteilhafte Szenarien

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 6: Java Collections und Generezität

Das Java Collection Framework wird typsicher.
Beim Auslesen von Objekten kann man sich auf den Erhalt eines Objekts mit dem vorgegebenen Typ verlassen.
Die Typinformation geht nicht verloren.
Es werden weniger explizite Typkonversionen (Casts) benötigt

javafrage Sun, 03/16/2014 - 18:27

8 Iterieren über TreeMap

8 Iterieren über TreeMap

Gegeben sei ein Objekt myMap vom Typ TreeMap siehe:

TreeMap<Integer, String> myMap= new TreeMap<Integer, String>();
myMap.put(33,“Anton“);
myMap.put(11,“Charles“);
myMap.put(22,“Bruno“);

Welche Werte werden beim Iterieren über die Schlüssel von myMap in welcher Reihenfolge ausgegeben?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 7: Vorteile einer LinkedList im Vergleich zu einer ArrayList

  1. Viele Einfüge oder Löschoperationen in der Liste
  2. Listenwachstum ist unvorhersehbar
  3. Zugriff auf Listenelemente mit einem Index ist nicht wichtig

 

 

javafrage Sun, 03/16/2014 - 18:38

Anonymous (not verified)

Sun, 06/19/2016 - 12:34

Kann man nicht auch bei ArrayList mit einem unvorhersehbarem Listenwachstum umgehen? Es ist ja auch eine Liste - und eben gerade kein reines Feld?

Stefan Schneider

Sun, 06/19/2016 - 14:49

In reply to by Anonymous (not verified)

das Einfügen in der Mitte oder am Anfang erfordert wahrscheinlich ein Umkopieren.
Das kann man ausprobieren. Suche Sie mal nach dem Nanotimer im Skript.

Zu Ihrem letzten Satz: Es ist ein Feld welches als Liste verwendet wird.

9 Java Collections und Schnittstellen

9 Java Collections und Schnittstellen

Warum werden die meisten Java Collections als Schnittstellen angeboten und nicht als einfache Klassen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Iterieren über TreeMap

  • 11
  • 22
  • 33
javafrage Sun, 03/16/2014 - 18:46

10 Java Collection Framework (Mengen, Listen)

10 Java Collection Framework (Mengen, Listen)

Im folgenden Beispielprogramm soll eine mathematische Menge von Objekten der Klasse String
verwendet werden.

In die Menge werden drei Zeichenketten eingetragen. Anschließend soll über die Menge der Zeichenketten zweimal iteriert werden.
1. Wählen Sie aus dem Collection Framework eine Klasse die sortierte Mengen verwaltet.
Tragen Sie den passenden Aufruf mit dem new Operator in der Zeile ein, in der die Variable s belegt wird.

2. Implementieren Sie im nachfolgenden Code eine erweiterte for-Schleife, die alle Zeichenketten auf der Konsole ausgibt ohne das ein Iterator verwendet wird.

3. Implementieren Sie eine while Schleife die den gegeben Iterator nutzt und alle Elemente der Menge auf der Konsole ausdruckt:

import java.util.*;
public class PersonenMenge{
/** In dieser Methode Code eintragen ! */
   public static void main(String[] args) {
     String p1 = new String("Schmidt");
     String p2 = new String("Mueller");
     String p3 = new String("Maier");

     Set<String> s = new ??         // 1.
     s.add(p1);
     s.add(p2);
     s.add(p3);

     // 2. Erweiterte for Schleife und Ausgabezeile implementieren

     Iterator<String> i = s.iterator();
     String ppp; // Hilfsvariable zum Iterieren

     // 3. While Schleife mit Iteratorbenutzung und Ausgabezeileimplementieren

   } // Ende main Methode
} // Ende der Klasse

4. Nennen Sie den Vorteil des Typs der in der ersten Frage gefordert wurde.

5. Nennen Sie Nachteile des Typs der in der ersten Frage gefordert wurde.

6. Welche Klasse zur Verwaltung von Mengen bietet das Java Collection Framework an, wenn die Sortiereihenfolge nicht wichtig ist?

7. Nennen Sie die Vorteile des Mengentyps (6.) der die Menge nicht sortiert verwaltet.

8. In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

  • Nennen sie zwei vorteilhafte Szenarien

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+4+4+2+2+2+2+2 Minuten

Antwort zu Frage 9: Java Collections und Schnittstellen

Entwickler können sich unterschiedliche Implementierungen abhängig vom Anwendungsfall auswählen. Die zu benutzenden Schnittstellen bleiben gleich.

javafrage Sat, 03/21/2015 - 13:28

11 Mengen in Java Collections

11 Mengen in Java Collections

Für die Verwaltung von Mengen (engl. Set) gibt es im Java Collection Framework eine Schnittstelle Set und zwei Klassen, die diese Schnittstelle implementieren. Nennen Sie die beiden Klassen, die die Schnittstelle Set implementieren. Welche Vorteile hat dieser Ansatz bei dem für Mengen eine Schnittstelle und zwei Klassen benutzt werden? Geben Sie eine kurze Erklärung.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+3 Minuten

Antwort zu Frage 10: Java Collection Framework (Mengen, Listen)

In die Menge werden drei Zeichenketten eingetragen. Anschließend soll über die Menge der Zeichenketten zweimal iteriert werden.
1. Wählen Sie aus dem Collection Framework eine Klasse die sortierte Mengen verwaltet.
Tragen Sie den passenden Aufruf mit dem new Operator in der Zeile ein, in der die Variable s belegt wird.

2. Implementieren Sie im nachfolgenden Code eine erweiterte for-Schleife, die alle Zeichenketten auf der Konsole ausgibt ohne das ein Iterator verwendet wird.

3. Implementieren Sie eine while Schleife die den gegeben Iterator nutzt und alle Elemente der Menge auf der Konsole ausdruckt:

package s2.collection;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class PersonenMenge{
/** In dieser Methode Code eintragen ! */
   public static void main(String[] args) {
     String p1 = new String("Schmidt");
     String p2 = new String("Mueller");
     String p3 = new String("Maier");

     Set<String> s = new TreeSet<String>();         // 1.
     s.add(p1);
     s.add(p2);
     s.add(p3);

     // 2. Erweiterte for Schleife und Ausgabezeile implementieren
     for (String p : s) {
          System.out.println("Person:" + p);
      }

     Iterator<String> i = s.iterator();
     String ppp; // Hilfsvariable zum Iterieren

     // 3. While Schleife mit Iteratorbenutzung und Ausgabezeileimplementieren
     while (i.hasNext()) {
        ppp = i.next();      
        System.out.println("Person:" + ppp);
      }

   } // Ende main Methode
} // Ende der Klasse

4. Nennen Sie den Vorteil des Typs der in der ersten Frage gefordert wurde.

  • Man kann sortiert über die Menge nach einem Schlüssel iterieren

5. Nennen Sie Nachteile des Typs der in der ersten Frage gefordert wurde.

  • Einfügen ist aufwendiger
  • Entfernen ist aufwendiger

6. Welche Klasse zur Verwaltung von Mengen bietet das Java Collection Framework an, wenn die Sortiereihenfolge nicht wichtig ist?

  • HashSet

7. Nennen Sie die Vorteile des Mengentyps (6.) der die Menge nicht sortiert verwaltet.

  • Sehr effizientes Einfügen und Löschen von Elementen

8. In welchen Fällen ist es von Vorteil eine java.util.LinkedList Klasse anstatt der java.util.ArrayList Klasse zu verwenden?

  • Viele Einfüge oder Löschoperationen in der Liste
  • Listenwachstum ist unvorhersehbar
  • Zugriff auf Listenelemente mit einem Index ist nicht wichtig
javafrage Sat, 02/13/2016 - 18:28

12 Iterieren mit der enhanced-for Schleife über eine ArrayList

12 Iterieren mit der enhanced-for Schleife über eine ArrayList

Das folgende Programm verwaltet Namen als Zeichenketten in einer ArrayList.

Implementieren eine erweiterte for Schleife („enhanced for loop“) mit der man elegant über alle Objekte der ArrayList iterieren kann.

Lassen Sie innerhalb der for-Schleife die Namen auf die Konsole drucken.

import java.util.ArrayList;
import java.util.List;
 
public class PersonenListeFor {
 
    public static void main(String[] args) {
 
        String p1 = new String("Schmidt");
        String p2 = new String("Mueller");
        String p3 = new String("Maier");
        List<String> s = new ArrayList<String>();
        s.add(p1);
        s.add(p2);
        s.add(p3);
        
        // Erweiterte (enhanced) for Schleife mit 
        // Konsolenausgabe hier implementieren

   } // Ende main Methode} // 
} // Ende der Klasse

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 11: Mengen in Java Collections

  1. HashSet
  2. TreeSet

Falls sich die Anforderungen an den Datentypen ändern kann man die Implementierung austauschen in dem man nur an einer Stelle (Objekterzeugung) eine Änderung vornimmt. Man kann auch selbst neue Implementierungen beisteuern die spezielle Eigenschaften haben ohne den Code in dem Typen verwendet werden zu ändern.

 

 

Die Antwort zur Frage dieser Seite finden Sie weiter unten...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 12: Iterieren mit der enhanced-for Schleife über eine ArrayList

import java.util.ArrayList;
import java.util.List;
 
public class PersonenListeFor {
 
    public static void main(String[] args) {
 
        String p1 = new String("Schmidt");
        String p2 = new String("Mueller");
        String p3 = new String("Maier");
        List<String> s = new ArrayList<String>();
        s.add(p1);
        s.add(p2);
        s.add(p3);
        
        // Erweiterte (enhanced) for Schleife mit 
        // Konsolenausgabe hier implementieren
        for ( String a: s) { 

System.out.println(“Name: “+ a);

} } // Ende main Methode} // } // Ende der Klasse

 

javafrage Sat, 02/13/2016 - 18:41

Fragen zu Datenstrukturen

Fragen zu Datenstrukturen javafrage Wed, 03/22/2017 - 20:18

1 Binärbäume

1 Binärbäume

Welche der Bäume sind korrekte, streng aufsteigend sortierte Binärbäume? Was sind die Fehler in den nicht korrekten Bäumen?

Geben Sie eine kurze Begründung.

Binärbaum 1 Binärbaum 2
erster Binärbaum zweiter Binärbaum

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten
javafrage Tue, 02/07/2012 - 08:22

2 AVL-Bäume

2 AVL-Bäume

Welche der beiden Bäume sind korrekte AVL-Bäume? Was sind die Fehler in den nicht korrekten Bäumen?

AVL-Baum 1 AVL-Baum 2
 AVL Baum 1 AVL Baum 2 

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 1: Binärbäume

Geben Sie eine kurze Begründung.

Binärbaum 1 Binärbaum 2

erster Binärbaum

Dieser Baum ist korrket

zweiter Binärbaum

Dieser Baum ist nicht korrekt. Der Knoten 2 müsste links von 4 eingeordnet sein

javafrage Wed, 02/08/2012 - 08:35

3 Bruderbäume

3 Bruderbäume

Welche der beiden Bäume sind korrekte Bruderbäume? Was sind die Fehler in den nicht korrekten Bäumen? Bitte geben Sie eine kurze Erklärung.

Bruder-Baum 1 Bruder-Baum 2
AVL Baum 1 AVL Baum 2

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 2: AVL-Bäume

AVL-Baum 1 AVL-Baum 2

 AVL Baum 1

Der Baum ist ein korrekter AVL-Baum.

AVL Baum 2 

Der AVL-Baum ist inkorrekt. Der Knoten F hat Höhe 3. Die Knoten M,N haben die Höhe 5. Bei AVL Bäumen ist nur ein Höhenunterschied von +/-1 erlaubt.

 

javafrage Fri, 02/10/2012 - 10:41

4 Erweitern eines AVL-Baums

4 Erweitern eines AVL-Baums

Der unten gezeigte Baum ist ein streng aufsteigend, sortierter Binärbaum und gleichzeitig ein AVL-Baum. Die Schlüssel in den Knoten sind ganze, positive Zahlen.
Fügen Sie 6 Knoten in das Diagramm ein.

  • Wählen Sie die Knotenpositionen so, dass der Baum ein AVL-Baum bleibt.
  • Tragen Sie dann die Schlüsselwerte so ein, dass der Baum streng sortiert bleibt.

AVL-Baum für Übungsaufgabe

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 3: Bruderbäume

Brudebaum 1 Bruderbaum 2

AVL Baum 1

Der Baum ist ein korrekter Bruderbaum

AVL Baum 2

Der Baum ist kein korrekter Bruderbaum.

Die Knoten L und M haben eine andere Höhe.

javafrage Sat, 01/05/2013 - 14:15

Anonymous (not verified)

Tue, 06/23/2020 - 18:57

Hallo, der rechte Baum wäre doch auch kein Bruderbaum wenn er zwar höhenbalanciert wäre aber nicht alle Söhne die gleiche Höhe hätten. Also der entscheidende Punkt ist ja nicht die Ausgeglichenheit sondern die Höhe der Söhne, oder?
Beste Grüße

5 Definition von Brüdern (bei Brüderbäumen)

5 Definition von Brüdern (bei Brüderbäumen)

Was sind Brüder im Kontext von Brüderbäumen?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 4: Erweitern eines AVL-Baums

Eine mögliche Lösung

 Lösung zur Übungsaufgabe zur Erweiterung eins AVL-Baums

javafrage Sat, 01/05/2013 - 14:30

6 Binär- und Bruderbäume

6 Binär- und Bruderbäume

Wann ist ein Binärbaum ein Bruderbaum? Nennen Sie die Kriterien.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 5: Definition Bruder (bei Bruderbäumen)

Knoten die den gleichen Vater besitzen.

javafrage Sat, 01/05/2013 - 14:41

7 Aufwände von Operationen in Listen, Warteschlangen und Bäumen

7 Aufwände von Operationen in Listen, Warteschlangen und Bäumen

Welche Aufwände O(n) haben die folgenden Operationen bei nicht optimierten Implementierungen?

  • Einfügen eines Elements am Kopf einer Liste
  • Suchen eines Elements in einer Liste
  • Finden eines Elements in einem balancierten Baum
  • Finden eines Elements in einem Feld(Array) bei bekanntem Index
  • Finden eines Elements in einem Feld(Array) wenn der Zugriffsindex nicht bekannt ist

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Antwort zu Frage 6: Binär- und Bruderbäume

  • Jeder innere Knoten hat einen oder zwei Söhne
  • Jeder unäre Knoten hat einen binären Bruderknoten
  • Alle Söhne haben die gleiche Tiefe
javafrage Tue, 03/18/2014 - 08:36

Anonymous (not verified)

Sat, 05/20/2017 - 13:08

Vielen Dank für die Javafragen!
Sollte der letzte Stichpunkt der Antwort zu Frage 6 und 8 nicht heißen:
- Alle Blattknoten haben die gleiche Tiefe
Bei Fragen 8 und 9 ist mir außerdem aufgefallen, dass die Kommentarfunktion deaktiviert ist.

habe die Kommentarfunktion wieder eingeschaltet. Das gab es mal böse Robots...
Zu den Söhnen. Das passt schon. Jeder Vater hat Söhne mit der gleichen Tiefe. Es können nicht alle Blattknoten im Baum die gleiche Höhe haben. Ein Vater ist immer um eins höher als sein Sohn.

8 Definition Bruderbaum

8 Definition Bruderbaum

Welche drei Bedingungen gelten für einen Bruderbaum?

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 7: Aufwände von Operationen in Listen, Warteschlangen und Bäumen

  • Einfügen eines Elements am Kopf einer Liste: O(1)
  • Suchen eines Elements in einer Liste: O(n)
  • Finden eines Elements in einem balancierten Baum: O(logN)
  • Finden eines Elements in einem Feld(Array) bei bekanntem Index: O(1)
  • Finden eines Elements in einem Feld(Array) wenn der Zugriffsindex nicht bekannt ist: O(n)
javafrage Tue, 03/18/2014 - 08:47

9 Anforderungen an einen AVL-Baum

9 Anforderungen an einen AVL-Baum

Was gilt für alle Teilbäume eines AVL-Baums?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 8: Definition Bruderbaum

  1. Jeder innere Knoten hat einen oder zwei Söhne
  2. Jeder unäre Knoten hat einen binären Bruderknoten
  3. Alle Söhne eines Vaters haben die gleiche Tiefe
javafrage Tue, 03/18/2014 - 08:57

Anonymous (not verified)

Tue, 06/27/2017 - 11:22

Es sollte bei 3. m.E. heißen: Alle Blätter haben die gleiche Tiefe.
Denn, auch innere Knoten sind Söhne, haben jedoch unterschiedliche Tiefen.

Eine etwaige Änderung müsste auch im Artikel "Bruderbäume" übernommen werden.

10 Bruderbaum korrigieren

10 Bruderbaum korrigieren
Inkorrekter Bruderbaum

Der Baum links, ist mit seinen äusseren Blattknoten (Werte 1 bis 6) streng aufsteigend sortiert.

Warum ist dieser Baum kein Bruderbaum? Geben Sie eine kurze Erklärung.

Zeichnen Sie rechts einen Baum, der ein streng aufsteigend sortierter Bruderbaum ist.

Er soll die gleichen 6 äusseren Blattknoten (Wert 1 bis 6) besitzen.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Antwort zu Frage 9: Anforderungen an einen AVL-Baum

Die Höhe des linken Unterbaums unterscheidet sich um maximal 1 von der Höhe des rechten Unterbaums.

javafrage Sat, 02/13/2016 - 17:10

11 Höhenbalancierter Binärbaum

11 Höhenbalancierter Binärbaum
Nicht höhenbalancierter Binärbaum Der links gezeigte Binärbaum ist streng aufsteigend sortiert. Er ist nicht höhenbalanciert.
Transformieren Sie die Knoten dieses Baums so, dass ein höhenbalancierter, streng sortierter Binärbaum der entsteht.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Antwort zu Frage 10: Bruderbaum korrigieren

Aufgabe Lösung
 Inkorrekter Bruderbaum Korrekter Bruderbaum 
javafrage Sat, 02/13/2016 - 17:23

Anonymous (not verified)

Mon, 04/17/2017 - 15:29

Fehlt hier nicht die entsprechende Erklärung?

12 AVL Baum: Fehler erkennen und korrigieren

12 AVL Baum: Fehler erkennen und korrigieren
Inkorrekter AVL Baum Der links gezeigte streng sortierte Binärbaum ist kein AVL Baum. Warum ist er kein AVL Baum? Geben Sie eine kurze Begründung:

Zeichnen Sie rechts die gleichen Knoten als einen streng aufsteigend, sortierten AVL-Baum ein:

 

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+4 Minuten

Antwort zu Frage 11: Höhenbalancierter Binärtbaum

Aufgabe Lösung
 Nicht höhenbalancierter Binärbaum Höhenbalancierter Binärbaum 

 

javafrage Sat, 02/13/2016 - 17:47

13 Warteschlangen

13 Warteschlangen

Die „einfache“ Warteschlange wird in echten Implementierungen eher selten eingesetzt. Nennen Sie den wichtigsten Nachteil einer „einfachen“ Warteschlange. Welcher Warteschlangentyp wird in realen Implementierungen eher eingesetzt. Nennen Sie den Fachbegriff. Was ist der Vorteil dieses Warteschlangentyps?

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2+2 Minuten

Antwort zu Frage 12: AVL Baum: Fehler erkennen und korrigieren

Knoten „80“ hat keinen Unterbaum (Höhe 1). Der Unterbaum von „40“ rechts hat die Höhe 3. Die Unterbäume dürfen sich in der Höhe nur um 1 unterscheiden.

Aufgabe Lösung
Inkorrekter AVL Baum Korrekter AVL Baum
javafrage Sat, 02/13/2016 - 18:13

Anonymous (not verified)

Sun, 06/19/2016 - 17:46

Könnte man nicht auch einfach die 60 links unter die 80 schreiben? Dann müsste man nicht den ganzen Baum ändern

14 Streng sortierte Binärbäume

14 Streng sortierte Binärbäume

Nennen Sie drei Eigenschaften die für jeden inneren Knoten eines streng
aufsteigend sortierten Binärbaums gelten.

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 13: Warteschlangen

Einfache Warteschlangen können beliebig groß werden falls ein Prozessor, der die Warteschlange bedient ausfällt. Dieser Ausfalls des Prozessors der die Warteschlange abarbeitet und Elemente löscht wird dann zu einem Hauptspeicheproblem führen. Das Hauptspeicherproblem kann dann die gesamte Anwendung stoppen.

Die Lösung:

Ringsspeicher auch Ringpuffer genannt.

Sie haben einen konstanten Speicherverbrauch.

javafrage Sat, 03/25/2017 - 17:21

15 Maximaler Aufwand für Binärbaum

15 Maximaler Aufwand für Binärbaum
Der streng sortierte Binärbaum (rechts) gewährleistet einen Zugriff auf alle Knoten mit einem minimalen Aufwand. Zeichnen Sie rechts daneben einen streng sortierten Binärbaum mit den gleichen Werten der den höchstmöglichen (schlechtesten) Aufwand für den Zugriff auf alle Knoten besitzt Binärbaum

Die Antwort finden Sie unten auf dieser Seite.

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 14: Streng sortierte Binärbäume

  1. Jeder Knoten hat einen oder zwei Söhne
  2. Jeder linke Sohn ist kleiner als der Vater
  3. Jeder rechte Sohn ist größer als der Vater

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Antwort zu Frage 15: Maximaler Aufwand für Binärbaum

Ein Baum der zu einer Liste degeniert ist hat den schlechtesten Aufwand O(n).

Anbei ein Beispiel:

Degenerierter Binärbaum

javafrage Sat, 03/25/2017 - 17:31

Fragen zu Ein- und Ausgaben (Streams)

Fragen zu Ein- und Ausgaben (Streams) javafrage Sat, 08/17/2019 - 10:04

1. Java-Streams

1. Java-Streams

Was verbindet ein Java-Stream?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten
javafrage Sat, 08/17/2019 - 10:07

2. Schreiben von Basistypen

2. Schreiben von Basistypen

Mit welcher Klasse kann ich Typen wie Character, Byte, Long oder Float schreiben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Antwort zu Frage 1: Java-Streams

Eine Datenquelle mit einem Datenziel

javafrage Sat, 08/17/2019 - 10:12

3. Die Klasse ObjectOutputStream

3. Die Klasse ObjectOutputStream

Was kann man mit der Klasse ObjectOutputStream schreiben?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Antwort zu Frage 2: Schreiben von Basis-Typen

DataOutputStream

javafrage Sat, 08/17/2019 - 10:16

4. Serialisierung in Java

4. Serialisierung in Java

Welchen Nachteil hat die Serialisierung in Java?

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 3: Die Klasse ObjectOutputStream

Alle Klassen die die Schnittstelle Serializable implementieren.

javafrage Sat, 08/17/2019 - 10:20

5. Erstmal nur eine Antwort...

5. Erstmal nur eine Antwort...

Das war's erstmal...

Antwort zu Frage 4: Serialisierung in Java

Sie kann nur bestimmte Klassen einlesen. Ändern sich die Klassen, können sie nicht mehr eingelesen werden.

javafrage Sat, 08/17/2019 - 10:21