Kann mir jemand dieses Programm erklären?

A

Alpinwhite

Aktives Mitglied
Wir sind heute ein Programm durchgegangen, dass ich nicht verstehe.
Die Aufgabe ist folgende:

Komplettieren Sie das Java-Programm „Anagram“, das zwei Wörter vom Benutzer (Kommandozeile) einliest und in weiterer Folge überprüft, ob es sich bei dem zweiten Wort um ein Anagramm des ersten Wortes handelt.
Definition „Anagramm“
 Das zweite Wort ist ein Anagramm des ersten Wortes, falls es durch Permutation aus dem ersten Wort erzeugt werden kann.
 Unterscheide dazu „Palindrome“ (Wörter die von vorne und hinten gelesen gleich sind…)
Bsp: 1. Wort 2. Wort Anagramme?
 item time Ja
 acres caress Nein
 scare cares Ja
 react crater Nein
 anna anna Ja (zusätzlich gilt die Eigenschaft „Palindrom“)
Zur Implementierung des Algorithmus (Vergleich der beiden Zeichenketten) verwenden Sie bitte „StringBuilder“ oder „StringBuffer“-Objekte! Lösungshinweis (ein möglicher Weg… 1. Prüfe auf gleiche Länge (falls ungleich, kein Anagramm) 2. Erzeuge eine modifizierbare Kopie des 2. Strings/Worts (=StringBuffer) 3. „Streiche“ im 2. String vorhandene Buchstaben des 1. Strings aus 4. Überprüfe ob im 2. String alle Buchstaben durchgestrichen sind…; ein Anagramm liegt vor, wenn genau dass der Fall ist.

Java:
public class Anagram {
    public static void main(String[] args) {
        String s1, s2;
        boolean isAnagram;

        System.out.print("Erstes Wort?: ");
        s1 = Input.readString();
        System.out.print("Zweites Wort?: ");
        s2 = Input.readString();

        // Prüfe auf gleiche Länge (falls ungleich, kein Anagramm)
        if (s1.length() == s2.length()) {

            // Erzeuge eine modifizierbare Kopie von s2
            StringBuffer sb2 = new StringBuffer(s2);
           
            // Streiche in s2 vorhandene Buchstaben in s1 aus
            for (int i=0; i<s1.length(); i++) {
                int pos = sb2.toString().indexOf(s1.charAt(i));
                if (pos != -1) {
                    sb2.setCharAt(pos, (char)0);
                }
            }
           
            // Überprüfe ob in sb2 alle Buchstaben durchgestrichen sind
            int i = 0;
            while (i<sb2.length() && sb2.charAt(i) == (char)0) {
                i++;
            }
            isAnagram = (i==sb2.length());
        }
        else
            isAnagram = false;

        System.out.print("Die beiden Wörter sind ");
        if (!isAnagram){
            System.out.print("KEINE ");
        }
        System.out.print("Anagramme.");
    }
}

-Was passiert in der ersten for-Schleife? Warum"streicht" man die Buchstaben raus?
-Warum kann "pos" den Wert -1 annehmen?
if (pos != -1) {
sb2.setCharAt(pos, (char)0);
}
 
Robat

Robat

Top Contributor
- pos kann dann -1 sein (wie man auch in der JavaDoc nachlesen kann), wenn der gesuchte Character nicht gefunden wurde
- Warum man die Buchstaben streicht? Um zu schauen, ob das erste Wort aus den selben Buchstaben wie das 2. Wort besteht. Bei time und item kannst du Schritt für Schritt jeden Buchstaben aus time in item streichen. Am Ende, wenn alle Buchstaben verstrichen sind (in beiden Worten) weißt du, dass sie gleich sein müssen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
A Kann mir Jemand erklären wie ich das iteriere? Java Basics - Anfänger-Themen 4
G Fehlersuche-kann mir jemand helfen? Java Basics - Anfänger-Themen 46
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
T Kann mir jemand sagen, was bei folgender for-Schleife passiert? Java Basics - Anfänger-Themen 1
F Versteht das jemand? -Java Java Basics - Anfänger-Themen 6
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
K Könnte mir jemand erläutern, was der autor damit meint? Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
H Java Hamster - kann mir jemand weiterhelfen? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
R weiß jemand warum Java diesen Fehler ausspuckt? "Variable might not hav been initialized" Java Basics - Anfänger-Themen 4
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
I kann mir jemand weiterhelfen, wo liegen die Fehler? Java Basics - Anfänger-Themen 3
E Kann mir jemand sagen was hier falsch ist? Java Basics - Anfänger-Themen 6
gonzoradio Hat jemand Erfahrung mit javavideokurs.de Java Basics - Anfänger-Themen 5
D Kann mir vielleicht jemand die reflexive Assoziation erklären? Java Basics - Anfänger-Themen 2
C Hat jemand Ahnung zum GCJ(Gnu Compiler for Java) Java Basics - Anfänger-Themen 7
S Kann mir jemand kurz die Vorteile des Iterators erklaeren..? Java Basics - Anfänger-Themen 8
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
S unschöne schleifen.jemand ne bessere idee Java Basics - Anfänger-Themen 4
K Kennt jemand ein gutes Tutorial für Wertübergabe? Java Basics - Anfänger-Themen 4
G Kann mir jemand das erklären? Java Basics - Anfänger-Themen 11
S Hat jemand eine Idee warum die JLabels nicht mehr farbig Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
G Nutzt Jemand JCalendar? Java Basics - Anfänger-Themen 3
C Kann jemand mir helfen? Java Basics - Anfänger-Themen 15
N Kann mir bitte jemand helfen? Java Basics - Anfänger-Themen 6
M Kann mir jemand erklären, wie "static" funktionier Java Basics - Anfänger-Themen 2
ChrisPL4Y Wieso funktioniert dieses Programm nicht? Java Basics - Anfänger-Themen 6
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
Tacofan Was macht dieses "Stückchen Code"? Java Basics - Anfänger-Themen 3
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
M Warum ist dieses Feld der Klasse Math immutable? Java Basics - Anfänger-Themen 7
R Wieso funktioniert dieses Array nicht? Java Basics - Anfänger-Themen 13
M Wie heisst dieses Sortierverfahren? Java Basics - Anfänger-Themen 6
G Wo ist die Eigenschaft dieses JFrames versteckt? Java Basics - Anfänger-Themen 5
G Wie nennt man dieses Konstrukt Java Basics - Anfänger-Themen 3
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
P OOP Wie schreib ich dieses Programm am besten? Java Basics - Anfänger-Themen 6
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
P Datentypen Warum würde dieses Beispiel nicht funktionieren? Java Basics - Anfänger-Themen 6
G Aus eigenem Panel dieses Löschen Java Basics - Anfänger-Themen 2
S für was steht dieses e ?? Java Basics - Anfänger-Themen 4
J Was bedeutet dieses a [i].length? Java Basics - Anfänger-Themen 3
D Wie bringe ich dieses Programm als .jar zum laufen ? Java Basics - Anfänger-Themen 12
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
W "Sprechen Sie Java?" suche dieses Buch gebraucht! Java Basics - Anfänger-Themen 11
G Dieses verdammte Regex Java Basics - Anfänger-Themen 2
H warum ist dieses Kontext static? Java Basics - Anfänger-Themen 5
G Dieses leidige ID Thema Java Basics - Anfänger-Themen 9
D Was ist denn dieses Jar ueberhaupt ? Java Basics - Anfänger-Themen 3
G Wie nennt man dieses Konstrukt: Vector<Object> Java Basics - Anfänger-Themen 2
N Ist dieses Problem mit Java zu lösen? Java Basics - Anfänger-Themen 7
C Warum funktioniert dieses Speichern in Array nicht? Java Basics - Anfänger-Themen 4
S Ist dieses Projekt realisierbar? Java Basics - Anfänger-Themen 2
D Warum läuft dieses Programm so langsam? Java Basics - Anfänger-Themen 5
B Split und dieses Zeichen "" Java Basics - Anfänger-Themen 3
G Was macht dieses Program ? Java Basics - Anfänger-Themen 13
L Dieses Problem nagt an meiner Würde - Argument * Java Basics - Anfänger-Themen 4
D Vereinfachung dieses Programms Java Basics - Anfänger-Themen 11
megachucky Suche ein paar gute Tutorials so wie dieses hier. Java Basics - Anfänger-Themen 4
M Wie auf ein Objekt zugreifen und dieses manipulieren? Java Basics - Anfänger-Themen 5
S Hilfe!!!! Wie ändere ich dieses Applet???? Java Basics - Anfänger-Themen 9
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
W Programm dass Palindrome erkennt Java Basics - Anfänger-Themen 6
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
J Programm schreiben Java Basics - Anfänger-Themen 5
T Programm Schleife/if Java Basics - Anfänger-Themen 2
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
G While/If Programm Java Basics - Anfänger-Themen 2
G Java-Programm Terminal Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
I Java Programm sieht wie exe aus. Java Basics - Anfänger-Themen 3
J Programm vereinfachen Java Basics - Anfänger-Themen 5
G Java-Programm weitergeben Java Basics - Anfänger-Themen 14
Kirby_Sike Programm startet nachdem es compiled wurde nicht Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Anzeige


Oben