ein if else problem

a.pst

Aktives Mitglied
salve,
das programm soll (irgendwann mal) die entropie eines textes berechnen....
aber ich bekomme die einzelnen werte nicht aus dem "if else"...

so hätte ichs gerne gehabt, aber so geht das leider irgendwie nicht :(:
Java:
float entropie= ea+eb+ec....ex+ey+ez;
wie bekomme ich ea...bis ez aus dem if else block raus zum rechnen? :)

gemeint ist ea bis ez:
Java:
                 if (a<0){
                 float wa = a/anzahlbuchstaben;
                 float la= (float) (Math.log10(1 / wa) / log2);
                 float ea= wa*la;
                 }
mein ganzer code:
Java:
public static void main(String[] args) {

        {
            BufferedReader ff;
            int cc;
            float a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0, j=0, k=0, l=0,
                    m=0, n=0, o=0, p=0, q=0, r=0, s=0, t=0, u=0, v=0, w=0,
                    x=0, y=0, z = 0, ß=0;
            float log2=(float) 0.30103;

            try {
                ff = new BufferedReader(new FileReader("text"));
                while ((cc = ff.read()) != -1) {
                    
                    //zählt die einzelnen buchstaben und summiert sie auf
                    char ccc = (char) cc;
                    if (ccc == 'a') {a++;}
                    else if(ccc=='b'){b++;}
                    else if(ccc=='c'){c++;}
                    else if(ccc=='d'){d++;}
                    else if(ccc=='e'){e++;}
                    else if(ccc=='d'){d++;}
                    else if(ccc=='f'){f++;}
                    else if(ccc=='g'){g++;}
                    else if(ccc=='h'){h++;}
                    else if(ccc=='i'){i++;}
                    else if(ccc=='j'){j++;}
                    else if(ccc=='k'){k++;}
                    else if(ccc=='l'){l++;}
                    else if(ccc=='m'){m++;}
                    else if(ccc=='n'){n++;}
                    else if(ccc=='o'){o++;}
                    else if(ccc=='p'){p++;}
                    else if(ccc=='q'){q++;}
                    else if(ccc=='r'){r++;}
                    else if(ccc=='s'){s++;}
                    else if(ccc=='ß'){ß++;}
                    else if(ccc=='t'){t++;}
                    else if(ccc=='u'){u++;}
                    else if(ccc=='v'){v++;}
                    else if(ccc=='w'){w++;}
                    else if(ccc=='x'){x++;}
                    else if(ccc=='y'){y++;}
                    else if(ccc=='z'){z++;}

                    else if(ccc=='A'){a++;}
                    else if(ccc=='B'){b++;}
                    else if(ccc=='C'){c++;}
                    else if(ccc=='E'){e++;}
                    else if(ccc=='F'){f++;}
                    else if(ccc=='G'){g++;}
                    else if(ccc=='H'){h++;}
                    else if(ccc=='I'){i++;}
                    else if(ccc=='J'){j++;}
                    else if(ccc=='K'){k++;}
                    else if(ccc=='L'){l++;}
                    else if(ccc=='M'){m++;}
                    else if(ccc=='N'){n++;}
                    else if(ccc=='O'){o++;}
                    else if(ccc=='P'){p++;}
                    else if(ccc=='Q'){q++;}
                    else if(ccc=='R'){r++;}
                    else if(ccc=='S'){s++;}
                    else if(ccc=='T'){t++;}
                    else if(ccc=='U'){u++;}
                    else if(ccc=='V'){v++;}
                    else if(ccc=='W'){w++;}
                    else if(ccc=='X'){x++;}
                    else if(ccc=='Y'){y++;}
                    else if(ccc=='Z'){z++;}
                }
                ff.close();
                
                 float anzahlbuchstaben=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+ß+t+u+v+w+x+y+z;
            
                 //berechnet wort auftritswahrscheinlichkeit, wort länge und einen teil der entropie
                 if (a<0){
                 float wa = a/anzahlbuchstaben;
                 float la= (float) (Math.log10(1 / wa) / log2);
                 float ea= wa*la;
                 }else if (b<0){
                 float wb=b/anzahlbuchstaben;
                 float lb= (float) (Math.log10(1 / wb) / log2);
                 float eb=wb*lb;
                 }else if(c<0){
                 float wc=c/anzahlbuchstaben;
                 float lc= (float) (Math.log10(1 / wc) / log2);
                 float ec=wc*lc;
                 }else if(d<0){
                 float wd=d/anzahlbuchstaben;
                 float ld= (float) (Math.log10(1 / wd) / log2);
                 float ed=wd*ld;
                 }else if(e<0){
                 float we=e/anzahlbuchstaben;
                 float le= (float) (Math.log10(1 / we) / log2);
                 float ee=we*le;
                 }else if(f<0){
                 float wf=f/anzahlbuchstaben;
                 float lf= (float) (Math.log10(1 / wf) / log2);
                 float ef=wf*lf;
                 }else if(g<0){
                 float wg=g/anzahlbuchstaben;
                 float lg= (float) (Math.log10(1 / wg) / log2);
                 float eg=wg*lg;
                 }else if(h<0){
                 float wh=h/anzahlbuchstaben;
                 float lh= (float) (Math.log10(1 / wh) / log2);
                 float eh=wh*lh;
                 }else if(i<0){
                 float wi=i/anzahlbuchstaben;
                 float li= (float) (Math.log10(1 / wi) / log2);
                 float ei=wi*li;
                 }else if(j<0){
                 float wj=j/anzahlbuchstaben;
                 float lj= (float) (Math.log10(1 / wj) / log2);
                 float ej=wj*lj;
                 }else if(k<0){
                 float wk=k/anzahlbuchstaben;
                 float lk= (float) (Math.log10(1 / wk) / log2);
                 float ek=wk*lk;
                 }else if(l<0){
                 float wl=l/anzahlbuchstaben;
                 float ll= (float) (Math.log10(1 / wl) / log2);
                 float el=wl*ll;
                 }else if(m<0){
                 float wm=m/anzahlbuchstaben;
                 float lm= (float) (Math.log10(1 / wm) / log2);
                 float em=wm*lm;
                 }else if(n<0){
                 float wn=n/anzahlbuchstaben;
                 float ln= (float) (Math.log10(1 / wn) / log2);
                 float en=wn*ln;
                 }else if(o<0){
                 float wo=0/anzahlbuchstaben;
                 float lo= (float) (Math.log10(1 / wo) / log2);
                 float eo=wo*lo;
                 }else if(p<0){
                 float wp=p/anzahlbuchstaben;
                 float lp= (float) (Math.log10(1 / wp) / log2);
                 float ep=wp*lp;
                 }else if(q<0){
                 float wq=q/anzahlbuchstaben;
                 float lq= (float) (Math.log10(1 / wq) / log2);
                 float eq=wq*lq;
                 }else if(r<0){
                 float wr=r/anzahlbuchstaben;
                 float lr= (float) (Math.log10(1 / wr) / log2);
                 float er=wr*lr;
                 }else if(s<0){
                 float ws=s/anzahlbuchstaben;
                 float ls= (float) (Math.log10(1 / ws) / log2);
                 float es=ws*ls;
                 }else if(ß<0){
                 float wß=ß/anzahlbuchstaben;
                 float lß= (float) (Math.log10(1 / wß) / log2);
                 float eß=wß*lß;
                 }else if(t<0){
                 float wt=t/anzahlbuchstaben;
                 float lt= (float) (Math.log10(1 / wt) / log2);
                 float et=wt*lt;
                 }else if(u<0){
                 float wu=u/anzahlbuchstaben;
                 float lu= (float) (Math.log10(1 / wu) / log2);
                 float eu=wu*lu;
                 }else if(w<0){
                 float wv=v/anzahlbuchstaben;
                 float lv= (float) (Math.log10(1 / wv) / log2);
                 float ev=wv*lv;
                 }else if(w<0){
                 float ww=w/anzahlbuchstaben;
                 float lw= (float) (Math.log10(1 / ww) / log2);
                 float ew=ww*lw;
                 }else if(x<0){
                 float wx=x/anzahlbuchstaben;
                 float lx= (float) (Math.log10(1 / wx) / log2);
                 float ex=wx*lx;
                 }else if(y<0){
                 float wy=y/anzahlbuchstaben;
                 float ly= (float) (Math.log10(1 / wy) / log2);
                 float ey=wy*wy;
                 }else if(z<0){
                 float wz=z/anzahlbuchstaben;                                                                                                                                                                               
                 float lz= (float) (Math.log10(1 / wz) / log2);
                 float ez=wz*lz;
                 }
            } 
            catch (IOException ee) {
                System.out.println("Fehler beim Lesen der Datei");
            }
        }
    }
 
Zuletzt bearbeitet:

icarus2

Top Contributor
Also wenn du so viele if-else hintereinander hast, dann kann ich dir mit Sicherheit sagen, dass etwas an deinem Desing überhaupt nicht stimmt. Erstens wäre sicher einmal in switch-Statement angebrachter als so viele if-else Abfragen.

Allerdings wäre es nicht schlecht die einzelnen Buchstaben in einem Array zu speichern und dann für einen Vergleich eine Schleife durchlaufen zu lassen. (Man könnte die Buchstaben natürlich sogar als Objekte behandeln, scheint mir jedch für kleinere Aufgaben mti Kanonen auf Spatzen geschossen zu sein).

Hier mal so als Idee (nicht getestet und natürlich nicht fertig). Hoffe es ist mit den Kommentaren verständlich.

[Java]
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class TestReader {


public static void main(String[] args) {

BufferedReader reader;

int cc;

// array where all letters are stored
final char[] letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

float[] occuredLetters = new float[26]; // array to count the events when a specific latter occurs
for(int i = 0; i < occuredLetters.length; i++){
occuredLetters = 0; // set all array values to 0
}

try {
reader = new BufferedReader(new FileReader("text"));

while( (cc = reader.read() ) != -1){

char currentLetter = (char) cc; // current char to check

// loops through the letters-array
for(int i = 0; i < letters.length; i++){

if( letters == currentLetter){ // if letter from the array fits the current char
occuredLetters++; // count up the amount of occurences for the current letter
break;
}
}

}

}catch(IOException e){
e.printStackTrace();
}
}

}
[/Java]
 

a.pst

Aktives Mitglied
@icarus2
design...nun ja, an und für sich war das nur als spielerei gedacht, mit wenig überlegung...
an switch case hatte ich auch schon gedacht, aber da bin ich wohl zu blöd für :(

dein vorschlag wird schwierig, denn wenn ein buchstabe im text nicht vorkommt, gibts eine division durch 0, und die gibt es ja nicht..., es bleibt das problem die fehlenden buchstaben aus zu sortieren ;(
 
Zuletzt bearbeitet:

a.pst

Aktives Mitglied
Java:
            float a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0, j=0, k=0, l=0,
                    m=0, n=0, o=0, p=0, q=0, r=0, s=0, t=0, u=0, v=0, w=0,
                    x=0, y=0, z = 0, ß=0;

Genauso wie du es schon oben mit den Variablen für a bis ß gemacht hast. ;-)
vielen dank, das ist die lösung! :)

warum komm ich da nicht selbst drauf? *kopfschüttel*
 

Landei

Top Contributor
ungetestet:
Java:
import java.util.*;
import java.io.*;

...

    public static void main(String[] args) {

        BufferedReader ff;
        int cc;
        float log2 = (float) 0.30103;

        try {
            Map<Character, Integer> freq = new HashMap<Character, Integer>();
            for(char ch = 'a'; ch <= 'z'; ch++) {
                freq.put(ch,0);
            }
            freq.put('ß',0);
            freq.put('ä',0);
            freq.put('ö',0);
            freq.put('ü',0);
            
            ff = new BufferedReader(new FileReader("text"));
            
            while ((cc = ff.read()) != -1) {
                char ccc = Character.toLowerCase((char) cc);
                Integer frequency = freq.get(ccc);
                if(frequency != null) {
                    freq.put(ccc, frequency + 1);
                }
            }
            ff.close();

            float anzahlbuchstaben = 0;
            for(Integer frequency : freq.values()) {
                anzahlbuchstaben += frequency;
            }
            
            //berechnet wort auftritswahrscheinlichkeit, wort länge und einen teil der entropie
            Map<Character, double[]> data = new TreeMap<Character, double[]>();
            for(Map.Entry<Character, Integer> entry : freq.entrySet()) {
                double probability = 1D*entry.getValue()/anzahlbuchstaben;
                double len = Math.log10(1 / probability) / log2;
                double entropy = probability * len;
                data.put(entry.getKey(), new double[]{probability, len, entropy});
            }
            
            //jetzt kann man mit data weiterarbeiten
            for(Map.Entry<Character, double[]> entry : data.entrySet()) {
                char ch = entry.getKey();
                double probability = entry.getValue()[0];
                double len = entry.getValue()[1];
                double entropy = entry.getValue()[2];
                System.out.println("'" + ch + "' prob:" + probability + " length:" + len + " entropy:" + entropy);
            }
        } catch (IOException ee) {
            System.out.println("Fehler beim Lesen der Datei");
        }
    }
 

icarus2

Top Contributor
design...nun ja, an und für sich war das nur als spielerei gedacht, mit wenig überlegung...
an switch case hatte ich auch schon gedacht, aber da bin ich wohl zu blöd für

So kleine Übungen sind gerade immer gut um zu lernen Programme "gut" zu schreiben, denn man kann diese Erfahrung dann später in grossen Projekten verwenden ;-)
Wo liegen denn die Probleme beim switch-Statement?


Landei hat dir da natürlich gerade die Paradelösung vorgestellt. Ist um einiges besser als meine, auch wenn sie vielleicht fürs Anfäger-Forum etwas kompliziert ist ^^
 

a.pst

Aktives Mitglied
also, bis ich das wirklich versteh, wirds noch ein bisserl dauern...
peinlich, peinlich...da hab ich doch glatt die umlaute vergessen.

So kleine Übungen sind gerade immer gut um zu lernen Programme "gut" zu schreiben, denn man kann diese Erfahrung dann später in grossen Projekten verwenden ;-)
Wo liegen denn die Probleme beim switch-Statement?
ich hatte das switch statemen falsch formuliert...jetzt funktioniert es aber :)
Java:
switch(ccc){
                      case 'a':a++;break;
                      case 'b':b++;break;
                      ....
                      ....
                      case 'z':z++;break;
                      case 'ä':a++;break;
                      case 'ö':ö++;break;
                      case 'ü':ü++;break;

                      case 'A':a++;break;
                      case 'B':b++;break;
                      ...
                      ...
                      case 'Z':z++;break;
                      case 'Ä':a++;break;
                      case 'Ö':ö++;break;
                      case 'Ü':ü++;break;
                  }
eine frage hätte ich noch, wie kann ich den wert von la auf eine ganze zahl aufrunden, zb 2,123 auf 3 aufrunden?
Java:
float la= (float) (Math.log10(1 / wa) / log2);
tante edit sagt:
aufrunden geht mit:
Java:
Math.ceil(double)
 
Zuletzt bearbeitet:

a.pst

Aktives Mitglied
Was verstehst du denn konkret nicht?
zum beispiel das:

klar ist mir, daß da eine neue treemap entsteht, weniger klar ist, weshalb eine treemap?
Java:
/berechnet wort auftritswahrscheinlichkeit, wort länge und einen teil der entropie
            Map<Character, double[]> data = new TreeMap<Character, double[]>();
            for(Map.Entry<Character, Integer> entry : freq.entrySet()) {
da ist mir auch nur klar, daß probability, len, entropy in den string eingetragen werden
Java:
                data.put(entry.getKey(), new double[]{probability, len, entropy});
            }
 
Zuletzt bearbeitet:

Landei

Top Contributor
Der einzige wichtige Unterschied zwischen einer HashMap und einer TreeMap ist, dass die TreeMap ihre Schlüssel sortiert ausgibt, während sie bei einer HashMap "durcheinander" geliefert werden.
 

Landei

Top Contributor
Das ist eigentlich egal, man kann auch nur TreeMaps nehmen. HahsMap ist etwas schneller, aber das wird hier kaum ins Gewicht fallen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
T If, else Problem Java Basics - Anfänger-Themen 12
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
S if und else problem... Java Basics - Anfänger-Themen 13
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
M Problem mit der For Schleife (else funzt nicht richtig) Java Basics - Anfänger-Themen 10
B unlogisches Problem mit Tastatureingabe und If-Else Java Basics - Anfänger-Themen 4
O Problem mit else Java Basics - Anfänger-Themen 8
T if/else-Problem Java Basics - Anfänger-Themen 10
A if else problem Java Basics - Anfänger-Themen 8
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M If-Else Java Basics - Anfänger-Themen 5
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
laxla123 If-else Java Java Basics - Anfänger-Themen 4
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Übung Else if Java Basics - Anfänger-Themen 2
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
steven789hjk543 Input mit if-else Java Basics - Anfänger-Themen 23
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
R else without if error Java Basics - Anfänger-Themen 5
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
C Variablen 'else' without 'if' Java Basics - Anfänger-Themen 4
F If - Else Java Basics - Anfänger-Themen 3
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K Frage zu If & else if Java Basics - Anfänger-Themen 5
R else if anweisungen Java Basics - Anfänger-Themen 2
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
Hijo2006 If-else Java Basics - Anfänger-Themen 6
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
T If/ Else If (zurückkehren) Java Basics - Anfänger-Themen 4
O Grosse If / Else verschachtelung übersichlitcher gestlten Java Basics - Anfänger-Themen 6
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
M If in einem else Java Basics - Anfänger-Themen 14
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
C else in if umschreiben Java Basics - Anfänger-Themen 2
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
E If...else... Java Basics - Anfänger-Themen 7
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C If Else Frage Java Basics - Anfänger-Themen 2
M if, else Anweisung Java Basics - Anfänger-Themen 3
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
P [ANFÄNGER] if else funktioniert nicht Java Basics - Anfänger-Themen 4
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
L else without if Fehler Java Basics - Anfänger-Themen 14
F try/catch - (else) Java Basics - Anfänger-Themen 11
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
Q if-else Logikproblem Java Basics - Anfänger-Themen 4
M Probleme mit else if Java Basics - Anfänger-Themen 15
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
K Bedingungen else Java Basics - Anfänger-Themen 7
B if-else in einer schleife Java Basics - Anfänger-Themen 14
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
T if else Java Basics - Anfänger-Themen 8
R boolean, if-else Java Basics - Anfänger-Themen 7
M if then else geht nicht Java Basics - Anfänger-Themen 10
P int-Wertevergleich mit if-else-Verzweigung Java Basics - Anfänger-Themen 3
P If-else-Verzweigung Java Basics - Anfänger-Themen 9
E Compiler-Fehler Fehler: else without if Java Basics - Anfänger-Themen 11
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
C if else Abfrage Java Basics - Anfänger-Themen 11
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
C Schleifen, if, else......? Java Basics - Anfänger-Themen 8
2 if und else Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
S if-else Java Basics - Anfänger-Themen 22
N If-else-If Leiter Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben