Kann mir jemand dieses Programm erklären?

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

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
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
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
U Kann mir jemand helfen? Java Basics - Anfänger-Themen 2
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
C Kann mir jemand helfen was mit diesen Fehlern gemeint ist ? Java Basics - Anfänger-Themen 12
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
HeiTim Kann mir Jemand helfen ? Java Basics - Anfänger-Themen 11
H Versteht jemand diesen Codewars Error? Java Basics - Anfänger-Themen 8
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
marcooooo Kann mir jemand das Beispiel kurz erklären so ungefähr:/ Java Basics - Anfänger-Themen 7
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
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
Salvatore321 Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? Java Basics - Anfänger-Themen 5
Sajeel Chattha Dieses Programm umschreiben Java Basics - Anfänger-Themen 5
M Wie erstelle ich dieses Parallelogramm??? Java Basics - Anfänger-Themen 6
P Wie kann ich die Zahlen dieses Arrays dividieren? 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

Ähnliche Java Themen

Neue Themen


Oben