Prüfungsvorbereitung Januar ( Thema Ausdrücke )

sporty90

Mitglied
Hallo,

ich fragte hier schon einmal regelmäßig nach Hilfe ( die übrigens Klasse war ), konnte die Prüfung allerdings nicht mitschreiben, da mir einige Themen doch fehlten und ich erst lernen musste zu lernen. Jetzt Arbeite ich alle Themen ab und versuche es, so gut es geht, selbständig. Wenn ich Fragen habe und absolut nicht weiterkomme, werde ich euch fragen. Meine Lösungen zu den Aufgaben werde ich hier Teilen, in der Hoffnung, dass jemand drüber gucken kann. Möchte ja nichts falsch lernen.

Thema Ausdrücke ( Bezeichnung Prof )

1) Es sei n eine Variable des Typs int mit positiven Wert. Realisieren Sie einen Ausdruck, der genau dann true liefert, wenn der Wert von n gerade ist:

Lösung: n % 2 == 0

2) Es seien m und n Variablen des Typs long. Schreiben Sie einen Ausdruck des Typs float, der mathematisch korrekt ( soweit möglich ) den Mittelwert der Werte von m und n berechnet.

Lösung: System.out.println(float (m + n) / 2 );

3) Es sei z eine Variable des Typ int. Der Wert von z sei eine Zahl zwischen 0 und 9. Schreiben Sie einen Ausdruck des Typs char, der das Ziffernsymbol zum Wert von z berechnet. Enthält z den Wert 0, berechnet der Ausdruck das Zeichen 0, für den Wert 1 das Zeichen 1 usw. Ihre Lösung darf keinen bedingten Ausdruck und keine konstante des Typs int oder long enthalten.

Lösung: char digitSymbol = ( char ) ( 0+ z );

Hoffe die Sachen passen soweit.
 

Robert Zenz

Top Contributor
1) Es sei n eine Variable des Typs int mit positiven Wert. Realisieren Sie einen Ausdruck, der genau dann true liefert, wenn der Wert von n gerade ist:

Lösung: n % 2 == 0
Ja. Vorrausgesetzt "0" zaehlt als gerade.

2) Es seien m und n Variablen des Typs long. Schreiben Sie einen Ausdruck des Typs float, der mathematisch korrekt ( soweit möglich ) den Mittelwert der Werte von m und n berechnet.

Lösung: System.out.println(float (m + n) / 2 );
Falsch, das ist kein gueltiger Java Ausdruck. Eine Umwandlung/Cast folgt immer der Syntax

Java:
(TARGET_TYPE)expression

Wobei expression natuerlich jeder gueltiger andere Ausdruck sein kann:

Java:
(int)5
(int)5f
(int)someComplexObject
(int)(1+2)

Wobei du natuerlich zwei Deinge beachten musst. Zur Laufzeit kann eine ClassCastException geworfen werden wenn die Umwandlung nicht moeglich ist. Und der Cast wirkt nur auf den direkt folgenden Ausdruck. Also:

Java:
(int)5 + 2f
(int)(5 + 2f)

Ergeben unterschiedlische Typen!

3) Es sei z eine Variable des Typ int. Der Wert von z sei eine Zahl zwischen 0 und 9. Schreiben Sie einen Ausdruck des Typs char, der das Ziffernsymbol zum Wert von z berechnet. Enthält z den Wert 0, berechnet der Ausdruck das Zeichen 0, für den Wert 1 das Zeichen 1 usw. Ihre Lösung darf keinen bedingten Ausdruck und keine konstante des Typs int oder long enthalten.

Lösung: char digitSymbol = ( char ) ( 0+ z );
Ufff...das ist eine Kackfrage es vielerlei Gruenden. Vermutlich fragt hier der Professor tatsaechlich nach den den ersten 128-Byte in Unicode, welche mit ASCII uebereinstimmen. Also wenn du den char "0" nimmst und dann z dazu addierst, kommst du hin (vorrausgesetzt dein Ausdruck ist char digitSymbol = ( char ) ( '0'+ z ), das ist nicht ganz klar ersichtlich bei deinem Beitrag). Das ist aber an viele Annahmen gebunden. Eine korrektere, aber viel laengere Loesung waere:

Code:
char digit = Integer.toString(z).charAt(0);

Das setzt aber auch UTF-8 oder UTF-16 voraus (welche tatsaechlich gegeben sind in Java...normalerweise). Du kannst dir ja mal meine Wiederholung zum Thema String geben, da gehe ich auch kurz auf das Thema Encoding ein.
 

sporty90

Mitglied
@ Robert Zenz:

2) War ein Tippfehler meinerseits, hatte es eigentlich auch so aufgeschrieben : System.out.println((float) (m + n) / 2);

3) Alles klar, da werde ich noch einmal nachfragen, wie genau er es haben will.
 

Robert Zenz

Top Contributor
2) War ein Tippfehler meinerseits, hatte es eigentlich auch so aufgeschrieben : System.out.println((float) (m + n) / 2);
Das stimmt. So als Notiz, eine "einfache" Alternative waere:

Java:
System.out.println((m + n) / 2f)

Weil dann der Typ des Ergebnisses automatisch auf den groeszeren/genaueren Datentyp (hier von int nach float) erweitert wird.

3) Alles klar, da werde ich noch einmal nachfragen, wie genau er es haben will.
Also die Antwort wird stimmen, aber es ist halt an einige Annahmen ueber die Umgebung geknuepft die stimmen koennen oder auch nicht. In "richtiger" Software wuerde ich das addieren auf `char`s um bestimmte Zeichen zu erhalten immer als problematisch ansehen.
 

sporty90

Mitglied
Okay, bei der 3) werde ich einfach mal den Prof fragen.

4) Es sei k eine Variable des Typs int. Geben Sie einen Ausdruck an, der zu folgendem Ausdruck äquivalent ist und keinen bedingten Ausdruck enthält. Ein Tipp; denken Sie an logische Operatoren.

Java:
k % 50 == 0
  ? true
  : k % 7 > 3
      ? true
      : k > 100

Lösung:

Code:
(k % 50 == 0) || ((k % 7 > 3) || (k > 100))
 

Robert Zenz

Top Contributor
4) Es sei k eine Variable des Typs int. Geben Sie einen Ausdruck an, der zu folgendem Ausdruck äquivalent ist und keinen bedingten Ausdruck enthält. Ein Tipp; denken Sie an logische Operatoren.

k % 50 == 0
? true
: k % 7 > 3
? true
: k > 100

Lösung:

(k % 50 == 0) || ((k % 7 > 3) || (k > 100))
Meine Guete die Formatierung hat mich geworfen...

Java:
k % 50 == 0 ? true : k % 7 > 3 ? true : k > 100

Deine Antwort klingt richtig, ein paar Klammern zu viel, beziehungsweise ich haette sie an anderer Stelle gesetzt:

Java:
(k % 50) == 0 || (k % 7) > 3 || k > 100
 

sporty90

Mitglied
@Robert Zenz: Ja, die Formatierung sah wirklich wild aus ;)

5) Es sei url eine Variable des Typs String, die eine gültige Web Adresse enthält ( z.b https://www.Dortmund.de) Schreiben Sie einen Ausdruck des Typs String, der die letzten 3 Zeichen der Zeichenkette in url berechnet. Für das Beispiel ist der Wert des Ausdrucks ".de".

Lösung:

Java:
url.substring(url.length() - 3)

6) Es sei s eine Variable des Typs String. Schreiben Sie einen Ausdruck, der genau dann true liefert, wenn der Wert von s ein "Doppelwort" ist. Bei einem Doppelwort ist die erste Worthälfte gleich der zweiten Worthälfte, wie z.b Papa oder MiuMiu. MaMaM und Mama sind dagegen keine Doppelwörter.

Lösung:

Keine Ahnung.
 

Robert Zenz

Top Contributor
Willst du nicht mal alle fertig machen und dann nochmal mit allem vorbeikommen, anstatt dass jetzt so troepfchenweise zu machen?

5) Es sei url eine Variable des Typs String, die eine gültige Web Adresse enthält ( z.b https://www.Dortmund.de) Schreiben Sie einen Ausdruck des Typs String, der die letzten 3 Zeichen der Zeichenkette in url berechnet. Für das Beispiel ist der Wert des Ausdrucks ".de".

Lösung:

Java:
url.substring(url.length() - 3)
Ja.

6) Es sei s eine Variable des Typs String. Schreiben Sie einen Ausdruck, der genau dann true liefert, wenn der Wert von s ein "Doppelwort" ist. Bei einem Doppelwort ist die erste Worthälfte gleich der zweiten Worthälfte, wie z.b Papa oder MiuMiu. MaMaM und Mama sind dagegen keine Doppelwörter.

Lösung:

Keine Ahnung.
Zusammen mit meiner Wiederholung von oben hast du bereits all das Wissen welches du dafuer brauchst (Hinweis: Aufgabe 5), du musst nur noch ein wenig darueber nachdenken.
 

sporty90

Mitglied
@Robert Zenz: Werde das so machen, wie du sagtest. Ich mache jetzt alle fertig und poste die hier, bis auf die, die ich nicht schaffe.

Wollte nur die Aufgabe 6 kontrollieren lassen, den Rest werde ich dann auf einmal posten.

Java:
boolean istDoppelwort = s.length() % 2 == 0 && s.substring(0, s.length() / 2).equals(s.substring(s.length() / 2));

Ich habe mir dabei folgendes Gedacht:

Zuerst wird geprüft, ob das Wort eine gerade oder ungerade Anzahl an Buchstaben hat, falls nein, würde direkt falsche zurückgegeben werden. Wenn true, dann wird die erste hälfte des Wortes mit der letzten hälfte des Wortes verglichen.
 
Zuletzt bearbeitet:

sporty90

Mitglied
6) Es sei s eine Variable des Typs String. Schreiben Sie einen Ausdruck, der genau dann true liefert, wenn der Wert von s ein "Doppelwort" ist. Bei einem Doppelwort ist die erste Worthälfte gleich der zweiten Worthälfte, wie z.b Papa oder MiuMiu. MaMaM und Mama sind dagegen keine Doppelwörter.

Lösung:

Java:
boolean istDoppelwort = s.length() % 2 == 0 && s.substring(0, s.length() / 2).equals(s.substring(s.length() / 2));

7) Es seien a und b Variablen des Typs long mit positiven Werten. Schreiben Sie einen Ausdruck des Typs boolean, der genau dann true liefert, wenn a + b ( mathematisch korrekt ) innerhalb des Wertebereich des Typ long liegt.

Lösung:

Code:
boolean result = (b <= Long.MAX_VALUE - a);

8) Es sei k eine Variable des Typs long. Schreiben Sie einen Ausdruck des Typ float, der mathematisch korrekt ( soweit wie möglich ) ein Fünftel des Wertes von k berechnet.

Lösung:

(k / 5f )

9) Es sei f eine Variable des Typs long. Schreiben Sie einen Ausdruck des Typs int, der die drittletzte Ziffer des Werts von f berechnet. Hat z.b f den Wert 125475, ist der erwartete Wert des Ausdrucks 4. Hat f den Wert 12, ist der erwartete Wert 0.

Lösung:

Code:
(int) f / 100 % 10

10) Es seien a und b Variablen des Typs Char. Das Zeichen in b liegt im Zeichenalphabet hinter dem Zeichen in a. Schreiben Sie einen Ausdruck des Typs Char, der das Zeichen in der Mitte zwischen diesen beiden Zeichen berechnet. Enthält z.b a das Zeichen c und b das Zeichen g, dann soll der Ausdruck e berechnen. Gibt es kein exakt mittleres Zeichen ( wie z.b zwischen c und f`), dann kann der Ausdruck das Zeichen vor oder hinter der Mitte berechnen

Lösung:

Code:
char result = (char) ((a + b) / 2 );

11) Es sei s eine Variable des Typs String. Schreiben Sie einen Ausdruck des Typs Char, der das drittletzte Zeichen der Zeichenkette in s berechnet. Ist die Zeichenkette nicht ausreichend lang, soll der Ausdruck @ liefern.

Lösung:

Code:
char result = (s.length() >= 3)
        ? s.charAt(s.length() - 3)
        : '@';

12) Es sei f eine Variable des Typs float. Schreiben Sie einen Ausdruck des Typs int, der die ersten beiden Nachkommastellen der Werts von f als zweistellige Zahl berechnet. Hat z.b f den Wert 125.475, ist der erwartete Wert des Ausdruck 47. Hat f den Wert 12.5, ist der erwartete Wert 50.

Lösung:

Code:
System.out.println((int) (f * 100) % 100);


13) Es sei n eine Variable des Typs int. Der Wert von n sei eine Zahl zwischen 1 und 26. Schreiben Sie einen Ausdruck des Typs char, der das nte Zeichen des lateinischen Alphabets ( A bis Z ) berechnet. Enthält n den Wert 1, soll der Ausdruck das Zeichen A berechnen, für den Wert 2 das Zeichen B usw. Verwenden Sie keinen bedingten Ausdruck.

Lösung:

Code:
char letter = (char) ('A' + n - 1);


14) Es sei n eine Variable des Typs int. Schreiben Sie einen Ausdruck des Typs boolean, der genau dann true liefert, wenn der Wert von n mindestens vierstellig und außerdem ein Vielfaches von 3 ist.

Lösung:

Code:
boolean reuslt = n >= 1000 && n % 3 == 0;

15) Es sei n eine Variable des Typs int mit positivem Wert. Realisieren Sie einen Ausdruck, der die vorletzte Ziffer des Werts von n berechnet.

Lösung:

Code:
n / 10 % 10

16) Es sei d eine Variable des Typs double. Der Wert sei ein positiver Euro Betrag, z.b 125,47. Realisieren Sie einen Ausdruck des Typs int, der den Cent Anteil des Betrags in d berechnet.

Lösung:

Code:
System.out.println((int) (d * 100 % 100));

17) Es sei s eine Variable des Typs String. Der Wert von s sei eine nicht leere Zeichenkette. Realisieren Sie einen Ausdruck, der das letzte Zeichen dieser Zeichenkette berechnet.

Lösung:

Code:
char result = s.charAt(s.length() - 1);

18) Es seien x und y Variablen vom Typ double. Schreibe einen Ausdruck des Typs boolean, der genau dann true liefert, wenn x und y positive Werte haben und ihr Produkt größer als 100 ist.

Lösung

Code:
boolean produkt = x > 0 && y > 0 && (x * y > 100);



Das sind alle Aufgaben, die ich lösen konnte. Bin mir aber unsicher, ob alles so passt. Die anderen, die mir sehr schwer fallen, werde ich erst jetzt anfangen. Ich poste diese Aufgaben hier zuerst, da ich so schon einmal ein Feedback bekommen kann und sich das etwas ziehen kann, mit den anderen Aufgaben.

Danke für eure Hilfe
 

Marinek

Bekanntes Mitglied
Also. Wir helfen hier ja gerne. Aber gibt es einen Grund, warum du das nicht selbst überprüfst? Indem du das Programm einfach laufen lässt??
 

Marinek

Bekanntes Mitglied
Versteh mich bitte nicht falsch. Du kannst dir so viele Fragen stellen wie du möchtest. Und es wird garantiert Personen geben, die darauf antworten und das auch sehr gerne tun. Aber für dich als Übung ist es wahrscheinlich besser wenn du diese Sachen auch selber ausprobierst und gerade die verschiedenen Fälle ausprobierst, die auch teilweise in den Aufgaben stehen und das gehört halt zu der ganz normalen Entwicklung dazu, dass du eben selber prüfst habe ich denn jetzt alles überprüft oder nicht?

Aber es hatte für mich den Eindruck gemacht, als würdest du es gar nicht ausprobieren, sondern hier im Forum auf Antwort warten und die Antworten sind zwar bestimmt alle richtig aber irgendwelche Sonderfälle wird man jetzt hier auch nicht alle im Kopf durchgespielt haben
 

Robert Zenz

Top Contributor
12 und 17 klingen ident, hast aber unterschiedliche Loesungen.

Bei 18 sind wir wieder bei der Annahme dass alles ASCII/UTF-8 ersten 128 Byte kompatibel ist, wird aber fuer die Aufgabe passen.

Klingt alles soweit richtig fuer mich. Wenn du Zweifel an deiner Loesung hast, kannst du folgendes machen, zum Beispiel Aufgabe 14:

Java:
public final class Main {
    public static final main(String[] args) {
        aufgabe14(0);
        aufgabe14(50);
        aufgabe14(999);
        aufgabe14(1000);
        aufgabe14(1002);
        aufgabe14(3000);
        aufgabe14(5000);
    }
 
    /**
     * Es sei n eine Variable des Typs int. Schreiben Sie einen Ausdruck
     * des Typs boolean, der genau dann true liefert, wenn der Wert von
     * n mindestens vierstellig und außerdem ein Vielfaches von 3 ist.
     *
     * @param n Die Zahl welche getestet wird.
     */
    private static final void aufgabe14(int n) {
        boolean resultat = n >= 1000 && n % 3 == 0;
   
        System.out.println("Aufgabe 14 n = " + Integer.toString(n) + ": " + Boolean.toString(resultat));
    }
}

Dann hast du einen ganz einfachen Test den du mehrfach aufrufen kannst und du siehst direkt das Ergebnis von deinen Aufgaben. Wenn du das so machst bist du auch schon direkt bei Testgetriebener Entwicklung (oder, fast halt, aber richtige Richtung), nur halt ohne Test-Framework.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Generic Prüfungsvorbereitung Java Basics - Anfänger-Themen 4
F Prüfungsvorbereitung Arrays Java Basics - Anfänger-Themen 32
I Multithreading (Prüfungsvorbereitung) Java Basics - Anfänger-Themen 6
Kotelettklopfer Java und das leidige Thema "wording" Java Basics - Anfänger-Themen 61
N Thema Vererbung Java Basics - Anfänger-Themen 31
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
F Concurrent Thema Java Basics - Anfänger-Themen 6
T Klassen Kleine Übung zum Thema Klassen Java Basics - Anfänger-Themen 3
G Threads zum Thema Threads??? null Ahnung Java Basics - Anfänger-Themen 4
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
E Erste Schritte Vorschläge für mich zum Thema Punkt vor Strich ? Java Basics - Anfänger-Themen 7
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
D Zähler nicht sichtbar (Thema: Konstruktoren) Java Basics - Anfänger-Themen 2
A Hilfestellung zum Thema Persistenz Java Basics - Anfänger-Themen 12
J Frage zum Thema ... alles mögliche! Java Basics - Anfänger-Themen 6
P Noch zum Thema Arrays Java Basics - Anfänger-Themen 13
T Bin Anfänger ... das Thema auch ? Java Basics - Anfänger-Themen 10
N JAR das Endlose Thema Java Basics - Anfänger-Themen 2
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
Dit_ Frage zum Thema Speicherreservierung Java Basics - Anfänger-Themen 3
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
I Verständnisfrage zum Thema APIs Java Basics - Anfänger-Themen 6
G Dieses leidige ID Thema Java Basics - Anfänger-Themen 9
N Das alte Thema "File Encoding" Java Basics - Anfänger-Themen 2
D Frage zum heiss geliebten Thema MVC Java Basics - Anfänger-Themen 24
D Abschlussklasse 13 Projektarbeit, thema? Java Basics - Anfänger-Themen 15
J Fragen zum Thema Arrays Java Basics - Anfänger-Themen 5
P Applet not inited - leidiges Thema Java Basics - Anfänger-Themen 6
Z leidiges Thema Datumsformatierung Java Basics - Anfänger-Themen 3
G Leidiges Thema Classpath Java Basics - Anfänger-Themen 5
G Syntax der if-Anweisung (Thema getrennt!) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben