Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen

DieKey

Mitglied
Hallo Leute!

Wir kriege ich es hin, dass ich z.B. die erste Stelle des Char- Arrays "chararray1" mit dem GANZEN Inhalt eines zweiten vergleichen kann? Also ob die erste Stelle des Char- Arrays in dem ganzen zweitem drin vor kommt?
Sprich:


Java:
chararray1[0] == chararray2[alle werte]


Würde mich über eine Antwort freuen

LG

DieKey
 

DieKey

Mitglied
Würde das dann theoretisch gehen??

"instring" ist ein String, von einem Text den ich eingegeben habe und indem ich den String "tosearch" suchen möchte!

Java:
private void SearchPattern(String instring, String tosearch) {
char[] inarray =instring.toLowerCase().toCharArray();
char [] tosearcharray = tosearch.toLowerCase().toCharArray();

for (int i = 0; i == tosearcharray.length; i++) {
	if (inarray.equals(tosearcharray[i])) {
		
	}
	else {
		System.out.println("Muster im einegegebenem text nicht gefunden!");
	}
}
	}

Es geht darum das ich ein Muster finden möchte.


EDIT:

Ich weiß mit "String.split..." würde das in 3 zeilen gehen, ich habe aber den Auftrag bekommen das so zu machen!
 
Zuletzt bearbeitet:

Voltaire81

Mitglied
"instring" ist ein String, von einem Text den ich eingegeben habe und indem ich den String "tosearch" suchen möchte!

[...]

Es geht darum das ich ein Muster finden möchte.

ich dacht eher an
Code:
"IrgendeinlagerTextString".contains("SuchString")
in einer einzigen Zeile...
Oder versteh ich jetzt einfach die Anforderung nicht?
 

DieKey

Mitglied
Ähhm Jaein!

Ich darf das nicht auf "String- Ebene" sondern auf Char- Array Ebende machen...



@ hüteüberhüte:

was bedeutet "char c" ??
 
B

bygones

Gast
Würde das dann theoretisch gehen??

"instring" ist ein String, von einem Text den ich eingegeben habe und indem ich den String "tosearch" suchen möchte!

Java:
private void SearchPattern(String instring, String tosearch) {
char[] inarray =instring.toLowerCase().toCharArray();
char [] tosearcharray = tosearch.toLowerCase().toCharArray();

for (int i = 0; i == tosearcharray.length; i++) {
	if (inarray.equals(tosearcharray[i])) {
		
	}
	else {
		System.out.println("Muster im einegegebenem text nicht gefunden!");
	}
}
	}

Es geht darum das ich ein Muster finden möchte.
nein, du vergleichst hier einen char[] mit einem einzelnen char... das kann nicht gehen.

musst du rausfinden, ob der eine array irgendwie im anderen ist oder wirklich [c]contains[/c] von string nachbauen ?

also waere [c]hello[/c] dann in [c]Hiellametorie[/c] richtig ?
 

DieKey

Mitglied
Nein, das währe falsch. Es müssen die Buschstaben hintereinander vorkommen:
Eingegebener Text:
Ich glaube das auto.

zu Suchendes Muster:
au

Vorkommnisse:
2 Mal bei:
Ich glaube das auto.

ALSO contains von String nachbauen!
 

Voltaire81

Mitglied
[OT]So eine Aufgabe kann nur von nem IT-Dozenten kommen. Ich hasse sowas. Praxisfern bis zum geht nicht mehr. Da wird das Rad neu erfunden[/OT]

Na dann verarschen wir halt mal zurück :

Java:
    public static boolean isIn(char[] source, char[] target) {
        int targetCount = target.length;
        char first = target[0];
        int max = source.length - target.length;

        for (int i = 0; i <= max; i++) {
            if (source[i] != first) {
                while (++i <= max && source[i] != first)
                    ;
            }
            if (i <= max) {
                int j = i + 1;
                int end = j + targetCount - 1;
                for (int k = 0 + 1; j < end && source[j] == target[k];
                     j++, k++)
                    ;

                if (j == end) {
                    return true;
                }
            }
        }
        return false;
    }

Das tut ein contains... zumindest so ähnlich.
 

DieKey

Mitglied
Er wird mir nie glauben das ich das geschrieben habe...
Abgesehen davon das ich den Quelltext nicht einmal richtig verstehe...:oops:

Gibt es Noch eine leichtere Variante? Sry.. Ich bin Java Anfänger seit erst 2 Wochen!
 
B

bygones

Gast
man kann es vielleicht etwas einfach schreiben, aber trivial ist es nicht.

Java:
    private static int find(char[] toLookIn, char[] search) {
        int counter = 0;
        for (int i = 0; i < toLookIn.length; i++) {
            // das erste zeichen ist gleich, nun alle anderen testen
            if (toLookIn[i] == search[0]) {
                int checkIndex = 1;
                // ueber alle zeichen von search gehen und schauen ob diese gleich sind
                while(checkIndex < search.length && toLookIn[i + checkIndex] == search[checkIndex]) {
                    checkIndex++;
                }
                // haben search komplett gefunden
                if (checkIndex == search.length) {
                    counter++;
                }
            }
        }
        return counter;
    }
gefahr koennte hier jedoch sein, dass [c]i + checkIndex > toLookIn.length[/c] ist
 

Voltaire81

Mitglied
Er wird mir nie glauben das ich das geschrieben habe...
Abgesehen davon das ich den Quelltext nicht einmal richtig verstehe...:oops:

Gibt es Noch eine leichtere Variante? Sry.. Ich bin Java Anfänger seit erst 2 Wochen!

Nicht das ich wüsste. Das ist ein leicht abgeänderter Code wie das Original contains das ermittelt. Sofern mir keiner zuvor kommt (was ich gut fände) kann ich's am Abend mal lesbarer machen und kommentieren.
 

Voltaire81

Mitglied
Was solls, ich vergesse es eh am Abend...
Hier mit Kommentaren in der Hoffnung das es deutlich wird was das so gemacht wird.

Java:
public static boolean isIn(char[] source, char[] target) {
        int targetCount = target.length;    
        //erst einmal die Länge des zu suchenden Strings

        char first = target[0];
        //nur zur Vereinfachung das erste Zeichen was wir suchen

        int max = source.length - target.length;
        //max... Wenn man im String "Hallo" das "lob" sucht kann man darauf verzichten die letzten beiden 
       //Zeichen zu untersuchen, der gesuchte Begriff kann darin nicht mehr vorkommen 

        for (int i = 0; i <= max; i++) {
            //Alles klar soweit, alle Zeichen durchgehen....
            if (source[i] != first) {
               //Sofern nicht das Zeichen bereits ein treffer ist
                while (++i <= max && source[i] != first)
                    ;
                //... und durchlaufen bis man auf eine Übereinstimmung trifft.
                //Der Original-Java Stil verlegt das hochzählen halt in den Schleifenkopf
                //Das ; als einzige Anweisung ist vollkommen legitim.
                //es geht natürlich ne klassischere Schleife
            }

            //Hier ist also eine Übereinstimmung gefunden
            if (i <= max) {
                //Es müsen noch genug Zeichen da sein damit der Suchbegriff gefunden werden kann
                int j = i + 1;
                //plus 1 weil wir vom ersten Zeichen ja schon wissen das es stimmt
                int end = j + targetCount - 1;
                //bis end muss geprüft werden (also nur sooft wie nötig, bei einem Suchbegriff aus 3
                //Zeichen braucht man nur noch die nächsten 2 zu prüfen
                
               for (int k = 0 + 1; j < end && source[j] == target[k];
                     j++, k++)
                //solange die Zeichen von source[j] und target[k] übereinstimmen
                //immer ein Zeichen vorrücken.   
                //int k = 0 +1 ist eine komische Notation wird aber verwendet weil man 
                //darauf hinweisen will das auch dort (wie bei j) ein Zeichen nach vorn gesprungen wird.
                ;

                if (j == end) {
                    //Wenn also jetzt die Anzahl der gefundenen Zeichen mit der Länge des Suchbegriffs
                    //übereinstimmen, ist das Wort komplett gefunden.
                    return true;
                }
            }
        }
        //sonst nüscht...
        return false;
    }
 
H

hüteüberhüte

Gast
Ähhm Jaein!

Ich darf das nicht auf "String- Ebene" sondern auf Char- Array Ebende machen...



@ hüteüberhüte:

was bedeutet "char c" ??

Die Aufgabe ist ziemlich einfach, schau dir mal den Quellcode zu String#contains an, das andere ist eine for-each-Schleife, ungefähr so müsste das aussehen:

Java:
String s1 = "hello";
String s2 = "llo";
boolean b = false;

for (int i = 0; i <= s1.length() - s2.length(); i++) {
int j = 0;
while (j < s2.length() && s1.charAt(i + j) == s2.charAt(j))
j++;
if (j == s2.length()) {
b = true;
break;
}
}

System.out.println(
"s1: " + s1 +
", s2: " + s2 +
", contains: " + b);

Der Code erklärt sich selbst am besten... Wenn ihr direkt mit char[] arbeiten sollt, musst du das einfach nur dahingehend umschreiben.

Zu den Code von Voltaire81 kann ich noch sagen, dass er zu kompliziert aussieht und deshalb höchstwahrscheinlich falsch ist.
 
Zuletzt bearbeitet von einem Moderator:

Voltaire81

Mitglied
Zu den Code von Voltaire81 kann ich noch sagen, dass er zu kompliziert aussieht und deshalb höchstwahrscheinlich falsch ist.

Lol, super Argument... :D
Wenn du Code nicht verstehst ist er wahrscheinlich falsch.... wie geil ist das denn.

Was bekommst DU denn wenn du Dir den Code zu contains ansiehst?
Anscheinend etwas anderes als ich.
Müsste wenn ich mich noch recht entsinne auf ein indexOf rauslaufen... was wiederum so etwas tut wie die kopierte Passage.
 
H

hüteüberhüte

Gast
falls du jemanden überzeugen willst, dass dein code nicht "falsch" ist, beweise dass er besser ist. :)
 
Zuletzt bearbeitet von einem Moderator:

Voltaire81

Mitglied
Davon sprach ich garnicht, oder?
Das ist ein von Dozenten kreierter Fall der in Mumpf rausläuft. Kein Mensch in der Praxis würde das Rad derart neu erfinden.
Ich sagte nur das das contains genau das so in der Art tut, nicht mehr, nicht weniger.

Wenn ich mich hierin irre das contains daraus hinausläuft ist das ja nicht einmal ein Drama. Daher ja auch meine Frage was du erhälst wenn du die Methode zurück verfolgst. Interessiert mich.
 
Zuletzt bearbeitet:
H

hüteüberhüte

Gast
mir war der code innerhalb der äußeren schleife einfach zu lang. entschuldigung, er kann natürlich auch richtig/schneller sein. weiß aber an dieser stelle nicht, weil nicht nachvollzogen. jedenfalls gibt es jetzt erstmal zwei variationen, die für diekey nützlich sein könnten. lass uns darauf einigen.
 

Voltaire81

Mitglied
mir war der code innerhalb der äußeren schleife einfach zu lang. entschuldigung, er kann natürlich auch richtig/schneller sein. weiß aber an dieser stelle nicht, weil nicht nachvollzogen. jedenfalls gibt es jetzt erstmal zwei variationen, die für diekey nützlich sein könnten. lass uns darauf einigen.


Machn mer :)
Sah auch jut aus dein Part.
Ums nochmal zu sagen, auch für den TO, mein geposteter Source war keine Eigenerfindung, das war eine Passage aus den Original leicht abgewandelt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
R Auf eine Stelle [i] des Arrays zugreifen Java Basics - Anfänger-Themen 7
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
G Float schneidet nach dem Rechnen auf eine Stelle ab Java Basics - Anfänger-Themen 9
D An eine ausgewählte Stelle in der Datei schreiben? Java Basics - Anfänger-Themen 7
Q An erste Stelle in eine Queue eintragen Java Basics - Anfänger-Themen 4
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
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
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
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
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
M Wie richte ich eine Diagonale an Robotern in einer World ein? Java Basics - Anfänger-Themen 15
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Kann ich eine jar anschauen wie sie gecoded wurde? Java Basics - Anfänger-Themen 2
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben