eingegebene Strings nache Eigenschaften durchsuchen.

Licht

Mitglied
Hallo Leute,

für eine Aufgabe muss ich ein eingegebenes Wort nach von mir bestimmten Inhalten durchsuchen lassen.
Zum Beispiel soll nachgeguckt werden, ob die Zahlen 1 - 9 enthalten sind bzw Buchstaben von a-z.

Bin inzwischen so weit gekommen:



Java:
import javax.swing.JOptionPane;

public class ContentSearch {

public static void main(String[] args) {
        String Entry = JOptionPane.showInputDialog("Bitte Eingabe machen");

        String Wert = "";

           if (Entry.contains("1,2,3,4,5,6,7,8,9")){
           Wert = "Alle Zahlen von 1 bis 9 enthalten";
       }
         
        
        JOptionPane.showMessageDialog(null, Wert);

    }


Die Frage ist nun, wie der Inhalt in den Klammern denn überhaupt geschrieben werden sollen ???:L :bahnhof: Ich glaube ich mache das dort irgendwie Falsch. Wenn ich alle Zahlen eingebe gibt er mir kein Wert.

Vielen Dank im Voraus :toll:
 

eRaaaa

Top Contributor
Du könntest anstelle contains -> matches verwenden mit einem entsprechenden Regex z.B. [1-9] oder [a-zA-Z] (evtl mit .* davor + dahinter, je nachdem wie der eigentliche String auszusehen hat..)
 
Zuletzt bearbeitet:

hdi

Top Contributor
Entry.contains("1,2,3,4,5,6,7,8,9")
Das liefert nur true, wenn der String die gesamte Zeichenkette "1,2,3,4,5,6,7,8,9" enthält. Inklusive Kommas, und auch in genau dieser Reihenfolge. Also offensichtlich nicht das, was du brauchst. Du musst jede Zahl einzeln prüfen. Mein Vorschlag:

Java:
String zahlen = "123456789";
boolean alleZahlenVorhanden = true;
for(char c : zahlen.toCharArray()){
    if(!zuPruefenderString.contains(c)){
       alleZahlenVorhanden = false;
       break;
    }
}
if(alleZahlenVorhanden){
  // ...
}

Analog kannst du das noch für die Buchstaben machen. Hier kannst du aber gleich ne for-Schleife über chars machen, siehe ASCII Tabelle für Zuordnung der Buchstaben zu int-Werten). Kleines 'a' ist zB 97 soweit ich weiß.

PS: evtl geht's noch viel einfacher mit regulären Ausdrücken, aber damit bin ich persönlich nicht so bewandert..
 

Licht

Mitglied
@hdi: ja mit Arrays kenne ich mich gar nicht aus und hätte Schwierigkeiten dies zu erklären. Trotzdem vielen Dank für deinen Tipp.

@eRaaaa:

Java:
 if (Entry.matches([a-zA-Z])){
    Wert = "alle Buchstaben sind enthalten.";
}

So sagt er mir aber

"illegal start of expression

cannot find symbol
symbol: variable a
location: class uebung.ContentSearch

cannot find symbol
symbol: variable zA
location: class uebung.ContentSearch

cannot find symbol
symbol: variable Z
location: class uebung.ContentSearch

illegal start of expression"
 

hdi

Top Contributor
Der Ausdruck muss schon ein String sein. Also in Anführungsstriche packen:
Java:
Entry.matches("[a-zA-Z]")
Allerdings heißt das nicht, dass alle Buchstaben vorhanden sind, sondern dass genau ein einziger Buchstabe vorhanden ist. Mach dich erstmal mit der Syntax von solchen Ausdrücken vertraut:
Pattern (Java Platform SE 6)
 

eRaaaa

Top Contributor
Naja, da fehlen die Anführungszeichen vom String, wusste nicht dass ich das extra noch erwähnen muss :D
Und ich denke auch, dass der Regex so nicht passen wird, wie sieht denn der eingegebene String aus? Kann der irgendwie aussehen und da soll nur geguckt werden ob da irgendwo eine Zahl oder Buchstabe enthalten ist oder wie? Denn da würde da so einfach nicht gehen
 

hdi

Top Contributor
@era Ich hab das so verstanden dass der übergebene String alle Ziffern 1-9 enthalten muss (Reihenfolge und andere Inhalte wohl egal). Ich glaub fast da ist meine Version noch leichter als mit Regex. Aber ich lass mich gern eines besseren belehren, ich hab mit RegEx wie gesagt nich so die Übung.

PS: bzw. alle Buchstaben, irgendwie nimmt der TO mal ein Beispiel mit Ziffern, mal eins mit Buchstaben..
 

eRaaaa

Top Contributor
@era Ich hab das so verstanden dass der übergebene String alle Ziffern 1-9 enthalten muss (Reihenfolge und andere Inhalte wohl egal). Ich glaub fast da ist meine Version noch leichter als mit Regex. Aber ich lass mich gern eines besseren belehren, ich hab mit RegEx wie gesagt nich so die Übung.

PS: bzw. alle Buchstaben, irgendwie nimmt der TO mal ein Beispiel mit Ziffern, mal eins mit Buchstaben..


Mhm achso, ok dann habe ich es in der Tat falsch verstanden
/edit: Jepp stimmt
Naja, oder man machts eben doch mit ner Schleife selbst *g*
 
Zuletzt bearbeitet:

hdi

Top Contributor
Aber damit prüfst du jetzt doch nur ob 9 Ziffern zwischen 1 und 9 vorkommen, aber nicht welche. Er will prüfen, ob der String tatsächlich jede der Ziffern von 1 bis 9 enthält. Deine Methode würd doch auch true liefern wenn der String "111222333" enthält. Oder nicht? Kann sein dass ich den replaceAll-Aufrufe falsch verstehe.
 

Licht

Mitglied
@eRaaaa: :D ja bin sehr neu in dieser Java-Materie. Bin grad dabei mich da durchzuschlagen. Viele Kleinigkeiten vergisst man schnell. Aber durch Fehler lernt man ja bekanntlich :) .
Und ja, es soll nachgeguckt werden ob z.B. alle Buchstaben enthalten sind.
Bsp.: "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern" hier sind alle Buchstaben a bis z enthalten ob groß oder klein.
 

hdi

Top Contributor
Bsp.: "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern" hier sind alle Buchstaben a bis z enthalten ob groß oder klein.

Würde dann analog zu meinem Code mit den Ziffern so aussehen:

Java:
boolean alleBuchstabenVorhanden = true;
for(int i = 97; i<97+26; i++){ // siehe ASCII-Tabelle: 97 = a, 98 = b, ..., 
    if(!zuPruefenderString.contains((char)i)){
       alleBuchstabenVorhanden = false;
       break;
    }
}
if(alleBuchstabenVorhanden ){
  // ...
}
Um nicht zwischen Groß- und Kleinschreibung zu unterscheiden müsstest du vor der Schleife dann noch den zu prüfenden String auf lower-case only runtertrimmen:

Java:
zuPruefenderString = zuPruefenderString.toLowerCase();

ja mit Arrays kenne ich mich gar nicht aus und hätte Schwierigkeiten dies zu erklären

Hier ist jetzt kein Array im Spiel. Und den Code zu den Ziffern kannst du auch ohne Array lösen:

Java:
String zahlen = "123456789";
boolean alleZahlenVorhanden = true;
for(int i = 0; i<zahlen.length; i++){
    if(!zuPruefenderString.contains(zahlen.charAt(i)){
       alleZahlenVorhanden = false;
       break;
    }
}
if(alleZahlenVorhanden){
  // ...
}

PS: Natürlich könntest du dir auch überlegen, dich halt mal mit Arrays zu beschäftigen ;)
 

eRaaaa

Top Contributor
So, da ich eben mit meinem Code auf die Nase gefallen bin, muss ich jetzt nochmal Klugschei*** :D
Man kann btw auch char in einer for Schleife direkt benutzen, dann muss man a) nicht die ASCII Tabelle auswendig können, b) somit keine magic numbers , c) kein extra cast notwendig !

Aber ein Regex oder anderer Einzeiler ist mir auch noch nicht eingefallen :oops::noe:
 

hdi

Top Contributor
Man kann btw auch char in einer for Schleife direkt benutzen, dann muss man a) nicht die ASCII Tabelle auswendig können, b) somit keine magic numbers , c) kein extra cast notwendig !
Wie kannst du gleich 3-fach über eine einzige Zeile Code meckern! Und damit auch noch völlig Recht haben :oops:
 

Licht

Mitglied
@hdi: bin grad am Bauklötze staunen... :applaus: die ASCII-Tabelle haben wir durchgenommen. Könnte ich also ruhigen Herzens versuchen zu erklären.
Dennoch habe ich eine Fehlermeldung von Netbeans (im // Kommentar):

Java:
String Wertb = "";

        boolean alleBuchstabenVorhanden = true;
        for(int i=97; i<97+26; i++) {
            if(!alleBuchstabenVorhanden.contains((char)i)){  //boolean cannot be dereferenced
             alleBuchstabenVorhanden = false;
            break;
            }
        }
if(Pangramm){
    Wertb = "alleBuchstabenVorhanden";
}else {
    Wertb = "NichtAlleBuchstabenSindVorhanden";
}

        JOptionPane.showMessageDialog(null, Wertb);


@eRaaaa: meinst du eine for schleife wäre dann einfacher zu erklären? ich kann mit der for schleife sowas anstellen:

Java:
public class Schleife
{
  public static void main(String[] args)
  {
    for(int i=0; i<10; i++)
      System.out.print(i);  
  }
}
ich weiß es ist eher ernüchternd. dennoch kann ichs :rtfm: :)
aber wie befehle ich, dass es nachguckt ob von mir bestimmte inhalte (buchstaben a bis z) vorhanden sind? wie ginge das denn für buchstaben?... ???:L
 

eRaaaa

Top Contributor
Naja, eig. genau so (da jetzt eh schon viel zu viel Code da ist)
Java:
		String s = "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern".toLowerCase();
		for (int i = 'a'; i <= 'z'; i++) {
			if(s.indexOf(i) == -1){
				System.out.println("Buchstabe "+(char)i+" ist nicht im String enthalten");
				break;
			}
		}

@hdi: contains geht trotzdem (ausser du machst daraus nen String z.B. :D) nicht und length-> length() :D
 

Licht

Mitglied
@eRaaaa: oh klar das ist ja natürlich sehr einleuchtend.

bloß will ich kein printoutln benutzen...


Java:
public static void main(String[] args) {
String Entry = JOptionPane.showInputDialog("Bitte Eintrag machen").toLowerCase();

        for (int i = 'a'; i <= 'z'; i++) {
            if(Entry.indexOf(i) == -1){
JOptionPane.showMessageDialog(null,"Buchstabe "+(char)i+" ist nicht im String enthalten");
                break;
            }
        }


so gehts denke ich auch :)
 
Zuletzt bearbeitet:

Gossi

Bekanntes Mitglied
Java:
public static void main(String[] args) {
String Entry = JOptionPane.showInputDialog("Bitte Eintrag machen").toLowerCase();

        for (int i = 'a'; i <= 'z'; i++) {
            if(Entry.indexOf(i) == -1){
JOptionPane.showMessageDialog(null,"Buchstabe "+(char)i+" ist nicht im String enthalten");
                break;
            }
        }

Führ das mal aus und als Zeichenkette nimmste 133766642 oder so, dann bekommst du 26 Fenster die dir sagen, dass die Buchstaben von a - z fehlen....

Java:
public static void main(String[] args) {
String Entry = JOptionPane.showInputDialog("Bitte Eintrag machen").toLowerCase();
String fehlendeBuchstaben = "";
for (int i = 'a'; i <= 'z'; i++) {
        if(Entry.indexOf(i) == -1){
                fehlendeBuchstaben += (char) i + ",";
                break;
        }
}

if(fehlendeBuchstaben.length > 0 {
        fehlendeBuchstaben = fehlendeBuchstaben.substring(0, fehlendeBuchstaben.length()-1);
        JOptionPane.showMessageDialog(null,"Die Buchstaben "+ fehlendeBuchstaben +" sind nicht im String enthalten");
}

[edit]
Vergiss meinen Post, du hast ja nen Break drinne, stand aufm Schlauch xD
[/edit]
 
Zuletzt bearbeitet:

Licht

Mitglied
@Gossi: danke trotzdem :)

@alle: java-forum rockt! einfach nur hammer wie schnell hier einem etwas erklärt wird. und auch noch so, dass man es verstehen und anwenden kann.
 

Licht

Mitglied
folgendes Problem:

Java:
public static void main(String[] args) {
String Entry = JOptionPane.showInputDialog("Bitte Eintrag machen").toLowerCase();
 
      for (int i = 'a'; i <= 'z'; i++) {
            if(Entry.indexOf(i) == -1){
JOptionPane.showMessageDialog(null,"Buchstabe "+(char)i+" ist nicht im String enthalten");
                
            }else JOptionPane.showMessageDialog(null, "alle Buchstaben enthalten");
       break; 
        }

am Anfang klappt das ja gut aber nach einigen Run´s mit dem Eintrag "a" sagt er mir, dass alle Buchtsaben enthalten sind.
Also sobald ein Eintrag gemacht wird, der den Buchstaben a enthält, kommt eine falsche Lösung raus.
Wobei das in den ersten Durchgängen funktioniert....
 

hdi

Top Contributor
Das else ist falsch. Da kommst du ja hin sobald der erste Buchstabe erfolgreich gefunden wurde. Das heißt aber nicht das ALLE drin sind.

Außerdem glaube ich vermischt du hier char und int. Bin mir nicht sicher ob das das Gewünschte tut, da der Wert je nach deklariertem Datentyp unterschiedlich interpretiert wird. Und ich weiß nicht genau was indexOf(int) tut. Mach aus dem "int i" in der for-Schleife lieber ein "char i".
 

hdi

Top Contributor
Was? Unabhängig von dem int vs char Ding ist die Logik deiner Schleife einfach falsch, das hast du mitbekommen oder?
 

hdi

Top Contributor
Wie schon gesagt:

Das else ist falsch. Da kommst du ja hin sobald der erste Buchstabe erfolgreich gefunden wurde. Das heißt aber nicht das ALLE drin sind.

nur versteh ich nicht was da falsch ist. erst klappts dann wieder nicht.
Es gibt nur zwei Fälle, in denen deine Logik korrekt zu sein scheint:
1) Der String enthält alle Buchstaben, und genau diese Information wird angezeigt
2) Der String enthält KEINEN Buchstaben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
T Auf eingegebene Frage Antworten Java Basics - Anfänger-Themen 19
T Eingegebene Wörter ausgeben? Java Basics - Anfänger-Themen 3
B Konsoleninput eingegebene linie nach Eingabe löschen Java Basics - Anfänger-Themen 5
D Input/Output Eingegebene Daten Speichern Java Basics - Anfänger-Themen 5
G Eingegebene Namen sortieren Java Basics - Anfänger-Themen 2
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
W Strings und das parsen Java Basics - Anfänger-Themen 8
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
MiMa Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben