Bestimmes zeichen im String zählen

Status
Nicht offen für weitere Antworten.
F

Fivvy

Gast
Hallo Leute!
Hab ein Problem und zwar will ich aus einem String = "Sers wie gehts?" mit einem Programm ausgeben wieviele "e" in diesem String vorhanden sind. Also als augabe dann "3".
Habe jetzt schon mit indexof charAt usw. rumprobiert aber auf keine wirkliche lösung gekommen.
Könnt ihr mir weiterhelfen?
mfg Fivvy
 

Sky

Top Contributor
Wo ist denn das Problem? Ein Schleife läuft von 0 bis Länge des Strings und guckt mittels chartAt an jeder Position, ob ein 'e' drin steht. Bei jeder Fundstelle eine Zählvariable um eins erhöhen!
 
G

Guest

Gast
Code:
"Sers wie gehts?".replaceAll("[^e]","").length()
 

Sky

Top Contributor
Anonymous hat gesagt.:
Vielen Dank, es hat geklappt.
Dumme Frage: Hast Du auch verstanden, warum es geklappt hat. Deiner Aussage entnehme ich erst mal nur, dass Du den Code kopiert und eingefügt und sodann als lauffähig betrachtet hast.
 
F

fivvy

Gast
Verstanden hab ich es auch. Den Befehl ReplaceAll kenne ich. Kenne nur nicht "[^].
Nur wenn ich bei meinem String am Anfang einen Großbuchstaben habe, zählt er ihn nicht mit, und ich kann ja nicht schreiben

replaceAll.("[^s, S]", "") oder sowas, oder?
 

The_S

Top Contributor
Hi fivvy :wink: ,

wie wärs mit toUpperCase()? [insider] Wenn das der Sierl hören würde, dass du sein tolles String my String Kapitel vergessen hast ... [/insider]
 
G

Guest

Gast
fivvy hat gesagt.:
Verstanden hab ich es auch. Den Befehl ReplaceAll kenne ich. Kenne nur nicht "[^].
Nur wenn ich bei meinem String am Anfang einen Großbuchstaben habe, zählt er ihn nicht mit, und ich kann ja nicht schreiben

replaceAll.("[^s, S]", "") oder sowas, oder?
[^eE]

^ negiert die Auswahl. Im Klartext heisst es "NICHT e oder E".
Alle Zeichen, bis auf die zwei, fallen durchs Raster.
Schau dir die Beschreibung in der API-Doku zu java.util.regex.Pattern an.
Viel Spaß beim E-Zählen. :bae:
 
G

Guest

Gast
@deathbyaclown
Du Mutant mit 12 Fingern warst schneller. :wink:
 

meez

Top Contributor
Hier hast du noch eine Methode aus meiner persönlichen Sammlung ;), die keine Regexe benutzt und deshalb auch in einer mehr oder weniger akzeptablen Geschwindigkeit läuft (Zudem funzt sie auch für mehr als 1 Zeichen):


Code:
	public int countPattern(final String s, final String pattern) {
		int i = 0;
		final int length = pattern.length();
		for (int n = 0 - length; (n = s.indexOf(pattern, n + length)) > -1; i++);
		return i;
	}
 
F

fivvy

Gast
vielen dank euch allen!!!!
Hab aber mit diesem String das nächste Problem!
Will jetzt den String quasi in der Ausgabe selber schreiben und dann zählen lassen wie viel z. B. wieder "s" enthalten sind. Dazu brauche ich hab bufferedReader und Inputreader und so weiter.
Mit dem folgenden Code klappt es irgendwie noch nicht.

Code:
 import java.io.*;
 
 public class Listing0203
 {
   public static void main(String[] args)
   throws IOException
   {
     int a, b, c;
     BufferedReader myString = new BufferedReader(
                          new InputStreamReader(System.in));
 
     System.out.println("Bitte geben Sie einen Text ein: ");
     a = Integer.parseInt(myString.readLine());
     
     int result;
	 result = myString.replaceAll("[^p]", "").length();
	    
	    System.out.println(result);
   }
}


er bringt mir da die Fehlermeldung:

cannot find symbol method replaceAll(java.lang.String,java.lang.String)

Wäre toll wenn mich jemand im Code verbessern könnte!!!!

L-ectron-X hat die Code-Tags eingefügt.
 

The_S

Top Contributor
Naja, myString ist ja auch kein String sondern ein BufferedReader!

[edit] OK, das war jetzt der klugscheißkommentar, jetzt ein paar ernsthafte verbesserungsvorschläge:

Warum castest du deinen eingegeben String in ein int? du musst den String in dem der eingegeben Text gespeichert ist mit replaceAll bearbeiten, nicht den BufferedReader!
 
F

fivvy

Gast
Danke Kiesel,
da hast du eigentlich recht. Wüsste jetzt aber nicht, wie ich es richtig hinbekomme.
 

The_S

Top Contributor
Code:
String temp = myString.readLine();
int result = temp.replaceAll("[^e]", "").length();
 
F

fivvy

Gast
das ist super, aber das programm verlangt von mir zahlen und keine Buchstaben wenn ich meinen String schreiben will. Wieso das??? Versteh ich nicht!!!!
 

Bleiglanz

Gesperrter Benutzer
cannot find symbol method replaceAll(java.lang.String,java.lang.String)

du hast wahrscheinlich Java < 1.4? da gibts da nämlich nicht
 

The_S

Top Contributor
fivvy hat gesagt.:
das ist super, aber das programm verlangt von mir zahlen und keine Buchstaben wenn ich meinen String schreiben will. Wieso das??? Versteh ich nicht!!!!

definier das mal genauer! Ist das eine Vorgabe von deinem Ausbilder, oder sagt dir der Compilier das? Wenn ja, was sagt er genau? Wie willst du Zeichen in nen Integer packen?

@ bleiglanz er hat das JDK 5, da es ja schonma mit replaceAll funktioniert hat!
 
F

fivvy

Gast
ja der Compiler verlangt von mir zahlen, Ich will ja aber buchstaben eingeben. Ich hab mir auch schon gedacht, dass wenn ich

Integer.parseInt(myString.readLine();

hab, dass das eigentlich nicht gehen kann. Aber wie soll der Befehl dann heißen. Statt int.
 
F

fivvy

Gast
Ich will ja nicht unbedingt nen int haben, aber ich weiß keinen anderen Befehel außer den int, den ich benutzen kann, dass ich bei meiner Eingabe von meiner Zeichenkette Buchstaben verwenden kann.
Der Compiler sagt mir direkt nix, aber wenn ich dann auf Ausführen geh und die dos-box öffnet und geb buchstaben ein dann mäggert das Programm. und wenn ich dann zahlen eingebe, dann macht ers durch, findet natürlich nichts weil ich ja nach einem "e" suche. Kannst du mir jetzt folgen???
Hoffe mal schon denn ich bin grad ratlos und weiß mal wieder nicht mehr weiter.
 

The_S

Top Contributor
Natürlich meckert er, wenn du ein Buchstaben eingibst, du liest die Zeile ja auch in einen Integer! Und ein Integer beinhaltet nunmal ausschließlich zahlen. Wesewegen ich mich auch die ganze Zeit frage, warum du unbedingt nen int willst.

Code:
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class ReplaceTest {
	
	public static void main(String[] args) {
		
		int sooft = 0;
		String zeichen = "e";
		String eingabe = null;
		System.out.println("Text eingeben ...\n");
		try {
			BufferedReader buffy = new BufferedReader(new InputStreamReader(System.in));
			eingabe = buffy.readLine();
         sooft = eingabe.replaceAll("[^" + zeichen + "]", "").length();
         System.out.println("Der Buchstabe \"" + zeichen + "\" kommt " + sooft + " mal im Text\n\"" + eingabe + "\"\nvor");
		}
		catch (IOException e) {
			System.out.println("Fehler beim einlesen der Zeile");
		}
	}
}

damit endlich a ruh is. Frag aber wenn den Code net verstanden hast und übernehm ihn net einfach
 
B

bygones

Gast
ncoh als kleine Anmerkung zu dem Code von Hobbit.

Falls eine Exception geworfen wird, wird das System ausgegeben, aber dennoch fliegt danach alles um die Ohren, da er dann einfach weiter macht und eingabe = null ist....

also ich wuerde z.b. im catch block das programm beenden

ausserdem - warum noch das "e" dranhaengen ? ich dachte das war nur ein bsp. wenn er z.b. nur "a' haben will verfaelscht es ja das ergebnis...
 

The_S

Top Contributor
deathbyaclown hat natürlich recht. Hatte das nur zuerst anders und mir dann überlegt, wenn ichs mit Variablen mach ists besser und dann vergessen alles auszubessern. Ich bessers gleich mal aus ...

@ deathbyaclown thx!
 
F

fivvy

Gast
Also verstanden hab ich das programm schon, bis auf ein paar kleine Feinheiten!!!

Erkläre mir bitte mal die Zeile 1 und 2.
Was bedeuten die Zeilen da oben überhaupt mit dem import. Weiß zwar wann ich sie brauch aber die Sierl hat das nie so richtig erklärt.

Dann die Zeile 11 mit dem null.
Was geht da vor sich.

und die Zeile 12.
Was ist \n????

Vielen Dank schon mal im Voraus. Kriegst ein Kaffee oder so wenn wir wieder schule haben.
 

The_S

Top Contributor
Zeile 1 und 2 importiert die Klassen BufferedReader und InputStreamReader. Da Java nicht Standardmäßig alles importiert an Klassen, was es gibt, musst du die meisten von Hand importieren. Du könntest auch statt den 1. 3 Zeilen einfach

Code:
import java.io.*;

schreiben.

In Zeile 11 erstelle ich einen Null-String. d. h. der String hat keinen Wert zugewießen, weil er null ist, aber es wird verhindert, dass der compiler meckert, dass die Variable nicht initialisiert seien könnte.

"\n" heißt einfach nur Absatz. "\n\n" ist dann eine Leerzeile usw. usf.

Trink doch keinen Kaffee, bring lieber n Bier mit. Gschmarr, lass stecken. Wenn ich jedesma was für meine Hilfe will, wär die Nadine ja schon arm :wink:
 
F

fivvy

Gast
Alles klar, danke so weit.
Aber eine Frage habe ich noch.

Zur Zeile 21 in der Ausgabe:

System.out.println("Der Buchstabe \"" + zeichen + "\" kommt " + sooft + " mal im Text\n\"" + eingabe + "\"\nvor");

So, was bedeuten die ganzen """" und \\\\.
Weißt du zufällig, wo es im Internet oder so einen deutschen Befehlszeichensatz mit Erklärung für Java gibt.
Wäre nämlich für mich sicherlich sehr hilfreich.
 
G

Guest

Gast
Zähle gleich mal alle Zeichen. ;)
Code:
class CharCounterInputStream extends FilterInputStream {
  private int stats[];
  
  public CharCounterInputStream(InputStream in) {
    super(in);
    stats = new int[256];
    Arrays.fill(stats, 0);
  }
  
  public int read() throws IOException {
    int c = super.read();
    if(c != -1)
      stats[c & 0xFF]++;
    return c;
  }

  public int read(byte[] b, int off, int len) throws IOException {
    int n = super.read(b, off, len);
    int j = off+n;
    for(int i=off; i<j; i++)
      stats[b[i] & 0xFF]++;
    return n;
  }

  public int getAmountOf(char c) {
    return stats[c];
  }
}
 

The_S

Top Contributor
Kauf dir ein Anfängerbuch. Gibts hier viele Empfehlungen. Oder ein kostenloses im Internet, gibts hier auch Empfehlungen. Ich persönlich hab mit Java 2 in 21 Tagen gelernt. Ansonsten gibts halt noch die API auf Englisch, aber ein FI/AE sollte sowieso gut englisch können :wink: .

Code:
String str = "\""; // Anführungszeichen
String str = "Eine Variable Zahl " + variableZahl // Verknüpft einen String mit einer Variablen, in diesem Fall trägt die Variable den Namen variableZahl
 
F

fivvy

Gast
Hab mir heute ein Buch bestellt, das heißt: Der Einstieg in Java. Denke mal das es auch gut ist. Ist ne Cd dabei usw.
Also danke mal.
 
F

fivvy

Gast
Es bleibt doch keine ruhe Kiesel!!!!

Mein Ausbilder will jetzt zusätzlich, dass wenn ich eine Zeichenkette schreibe dass als 2. Abfrage dann kommt, was für einen Buchstaben ich zählen will. Also hab ich nun noch einen BufferedReader gemacht und noch einen try und catch block gemacht. Aber wie erzähl ich dem Programm, dass er wenn ich in der 2. Abfrage ein i will dass er aus aus dem String in Abfrage 1 mir die i zählt und nicht die e. Und dass halt ohne dass ich im Code reinschreibe dass er das i zählen soll.
Ich weiß ich nerv!!!!!
 

The_S

Top Contributor
dafür hab ich dir doch die Variable angelegt. Mach einfach ne Userabfrage, in der der User angiebt, nach welchem Buchstaben er suchen will und ändere die Variable dementsprechend ab. Würd übrigens keine zwei try-catch Blöcke machen, sondern den einen in ne for-Schleife setzen.

BTW: Seit wann lernst du eigentlich Java?
 
F

Fivvy

Gast
hab ja eine neue userabfrage in der der user angibt, welche variable er zählen will. Aber es kann ja sein, dass der user einen string schreibt und dann sich einen buchstaben zählen will. Jetzt weiß ich ja vorher nicht welche variable er suchen will, deshalb kann ich ja nicht in den code "s" schreiben weil es ja sein könnte, dass der user ein t will.
Wie soll ich die Variable denn umändern? Kann ja nicht "a-z" oder so schreiben!!
Lerne java seit letzem Jahr in der Schule habe aber da nichts gecheckt wie du ja weißt, deshalb will ich jetzt mir das mal so gut wie möglich aneignen, damit ich es ein bisschen besser verstehe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
S Zeichen | in regex Allgemeine Java-Themen 8
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
T Komische Zeichen im Zusammenhang mit Serializable interface Allgemeine Java-Themen 13
M Checkstyle 100 Zeichen pro Zeile Allgemeine Java-Themen 11
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
N Überprüfung ob ein bestimmtes Zeichen <1 mal vorkommt Allgemeine Java-Themen 2
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
G Übermittlung zusätzlicher ASCII-Zeichen bei Übertragung von Dateiinhalt mit Xmodem - JAVA Allgemeine Java-Themen 9
R Wie bekomme ich das Zeichen 'digit' an vorderster Stelle Allgemeine Java-Themen 4
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
Bluedaishi Zeile um zeichen erweitern Allgemeine Java-Themen 9
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen &#8203; Allgemeine Java-Themen 3
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
AssELAss String jeweils nach x Zeichen Zeilenumbruch Allgemeine Java-Themen 1
DStrohma Input/Output KeyEvent nur verarbeiten wenn es ein "sichtbares" Zeichen ist? Allgemeine Java-Themen 1
B In Java String ein + Zeichen Allgemeine Java-Themen 4
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
V Tastendruck für UTF-8 Zeichen emulieren Allgemeine Java-Themen 4
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
R Besondere Zeichen in Dateinamen Allgemeine Java-Themen 4
B Alt-Griechisch Zeichen in Dateien Allgemeine Java-Themen 2
G AES Verschlüsselung nur bis 63 Zeichen Länge Allgemeine Java-Themen 2
M Fehlende Zeichen beim Drucken mit PDFBox Allgemeine Java-Themen 10
J String nur erste Zeichen vergleichen Allgemeine Java-Themen 6
C Variablen $-Zeichen in String ersetzen Allgemeine Java-Themen 3
S String Zeichen für Zeichen vergleichen Allgemeine Java-Themen 4
L Problem bei ausführbarer jar Datei mit Unicode-Zeichen Allgemeine Java-Themen 4
S String in Double - letztes Zeichen fehlt Allgemeine Java-Themen 4
A Erstes Zeichen im String "toUpperCase"n Allgemeine Java-Themen 11
A Umwandlung von Text/Zeichen in Polynome Allgemeine Java-Themen 8
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
Zettelkasten Aus String bestimmtes Zeichen herausfinden Allgemeine Java-Themen 19
M Asterisk in String ("Egal-Zeichen") Allgemeine Java-Themen 4
V Chinesische Zeichen Escapen Allgemeine Java-Themen 4
I Teilweise falsche Darstellung jap. Zeichen im JEditorPane mit RTFEditorKit aus RTF-Datei Allgemeine Java-Themen 5
D Datei mit allen Ascii Zeichen Allgemeine Java-Themen 2
R Unsichtbare Zeichen Allgemeine Java-Themen 7
U Namen von Klassen haben $-Zeichen Allgemeine Java-Themen 5
P RegEx und $-Zeichen als Literal Allgemeine Java-Themen 5
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7
A Zeichen beim Eingeben in ein DOS-Fenster nicht anzeigen? Allgemeine Java-Themen 3
F Hexcode von ASCII Zeichen erhalten Allgemeine Java-Themen 2
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
V Dateien mit &-Zeichen im Namen öffnen Allgemeine Java-Themen 13
N String in einzelne Zeichen zerlegen Allgemeine Java-Themen 8
M Problem mit Zeichen aus einer Datei auslesen Allgemeine Java-Themen 2
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
G Tschechische Zeichen in XML-Antwort Allgemeine Java-Themen 22
J Encoding und Gewinnung von Zeichen aus der Hexa-Darstellung Allgemeine Java-Themen 6
N Xor Warum kommt Flasches Zeichen in Java Allgemeine Java-Themen 36
S Stringarray splitten an unbekanntem Zeichen Allgemeine Java-Themen 7
A Dezimalzahlen: Komma-Zeichen Allgemeine Java-Themen 4
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
S Was bedeutet dieser Zeichen Allgemeine Java-Themen 4
E Wie Zeichen eingeben mit Klasse Scanner? Allgemeine Java-Themen 5
S Zeichen, dass Programm noch läuft Allgemeine Java-Themen 3
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
T [Regex] Zeichen ausschließen Allgemeine Java-Themen 8
Luma Unicode Steuerzeichen von druckbaren Zeichen trennen Allgemeine Java-Themen 10
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
G String parsen und Problem mit escaped zeichen Allgemeine Java-Themen 4
Z Letztes zeichen eines strings löschen Allgemeine Java-Themen 3
A bestimmte Zeichen aus einem String auslesen Allgemeine Java-Themen 2
L unicode-zeichen in ein txt-File schreiben Allgemeine Java-Themen 3
J Problem mit nichtlateinischen Zeichen Allgemeine Java-Themen 2
B String + Zeilenumbruch nach X-Zeichen Allgemeine Java-Themen 4
M Nach 4 Zeichen Fokus ändern Allgemeine Java-Themen 2
oliver1974 Wie ResourceBundles mit Unicode Zeichen korrekt einlesen? Allgemeine Java-Themen 4
E Alarm ausgeben (ASCII Zeichen 7) über Lautsprecher Allgemeine Java-Themen 11
G Alle Zeichen des Alphabets ausgeben Allgemeine Java-Themen 4
K String-Objekt mit zig tausend Zeichen Allgemeine Java-Themen 12
T Muster/Zeichen/Texterkennung auf einem Image Allgemeine Java-Themen 9
Y Zeichen verschiedenfarbig in einer JTextPane darstellen Allgemeine Java-Themen 17
P Regulärer Ausdruck um sich wiederholende Zeichen zu finden. Allgemeine Java-Themen 9
O Split methode tut bei Zeichen "\", "\\" Allgemeine Java-Themen 7
H Unicode Darstellung in Java, spezielles Zeichen gesucht Allgemeine Java-Themen 4
S Unicode-Zeichen erstellen/ Kodierung Allgemeine Java-Themen 4
J RegEx: "wenn zeichen folgen ersetze x mit y, sonst mit Allgemeine Java-Themen 2
Z Zeichen/char in einer Datei löschen Allgemeine Java-Themen 6
I $ zeichen im class-namen Allgemeine Java-Themen 4
S ￾ Zeichen umwandeln in ü per .replace(); Allgemeine Java-Themen 6
N Zeilenumbruch in String nach jeweils x Zeichen einfügen? Allgemeine Java-Themen 6
D gewisse Zeichen sind nach dem entschlüsseln anders Allgemeine Java-Themen 2
G Wandeln von Char Wert in Zeichen? Allgemeine Java-Themen 2
G subString() aber nicht auf Länge sondern auf Zeichen Allgemeine Java-Themen 3
L Hex --> Dezimal --> Zeichen Allgemeine Java-Themen 7
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben