Nachfrage zu Zeichenketten

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Morgen!!! Soll ein Programm schreiben, welches mir aus einer eingegebenen Zeichenkette unter anderem alle "Nicht-Buchstaben" entfernt und sonst alles in KleinBuchstaben wieder ausgibt.
Habe da jetzt diesen Code.
Code:
public class Zeichenketten {
	public static String buchstaben = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

	public static char[] vokal = { 'a', 'e', 'i', 'o', 'u' };

	public static String reduce(String s) {
		boolean b;
		String str = new String();
		for (int i = 0; i < s.length(); i++) {
			b = false;
			for (int j = 0; j < buchstaben.length(); j++)
				if (s.charAt(i) == buchstaben.charAt(j)) {
					b = true;
					break;
				}
			if (b)
				str = str + s.charAt(i);
		}
		return str.toLowerCase();
	}

Der liest doch jetzt bei "for (int i = 0; i < s.length(); i++) {" esrtmal alles aus, oder, und setzt es dann erstmal auf falsch. Anschliessend läuft er nochmal die ganze Buchstaben-Länge ab und übergibt nur Buchstaben (Vergleicht das hier: if (s.charAt(i) == buchstaben.charAt(j)) {). Und bei "str = str + s.charAt(i);" macht er alle Buchstaben zu kleinen, oder?

Kann m ir jemand sagen ob diese Erklärung so hinhaut?
 
G

Gast

Gast
sorry. meinte mit den Kleinbuchstaben bei " return str.toLowerCase(); "
 
S

SlaterB

Gast
> was macht denn aber if (b)
> str = str + s.charAt(i);

ist das eine Frage von einem zweiten Gast oder vom ersten? ;)
das fügt den Buchstaben in den neuen String ein wenn er gut ist (b == true)

----------

sieht soweit alles schick aus, teste das doch mal mit ein paar Beispielstrings,

noch ein Tipp im allgemeinen:
new String() braucht man praktisch nie, kann mich nicht erinnern das jemals eingesetzt zu haben,
verwende
String str = "";

Vereinfachung:
du könntest den String vorher mit s = s.toLowerCase(); auf Kleinbuchstaben setzen,
dann musst du nur auf Kleinbuchstaben prüfen,
also
public static String buchstaben = "abcdefghijklmnopqrstuvwxyz";

was ist eigentlich mit deutschen Umlauten, ß?
wozu ist das Vokal-Array?

-------

noch ne Vereinfachung, nicht wichtig:

statt
Code:
b = false; 
for (int j = 0; j < buchstaben.length(); j++)
    if (s.charAt(i) == buchstaben.charAt(j)) {
        b = true;
        break;
     }
if (b)
    str = str + s.charAt(i);

mache
Code:
 for (int j = 0; j < buchstaben.length(); j++) {
      if (s.charAt(i) == buchstaben.charAt(j)) {
         str = str + s.charAt(i); 
         break;
      }
}
das ist kürzer ;)

-----------

noch mal genereller Tipp:
verwende NIE NIE NIE for-Schleifen oder if-Abfragen ohne öffnende und schließende Klammer,
das ist schrecklich ;)
 
G

Gast

Gast
ok danke, der vokal array ist dafür da, das er mir zum schluss ausgibt wieviele vokale halt in meinem eingegebenen text enthalten sind.
 
G

Gast

Gast
würde das so erklären, dass der string durchlaufen wird und der s-string mit dem buchstaben-string verglichen wird. wenn dies korrekt ist wird es zu str addiert.

ist das soweit richtig???
 
S

SlaterB

Gast
stilistisch nicht schön, aber im Großen und Ganzen richtig, ja
 
S

SlaterB

Gast
na, das ist ja deine Aufgabe ;)
wenn du nicht weißt wie es besser geht, dann lasse es so,
gefragt ist ja was du machen würdest und ist ja auch nicht schlecht

Ich würde anfangen mit:
"Die Klasse/ Operation xy hat folgende Funktion .., folgende Eingaben .."
usw.

nicht mit
"Der liest doch jetzt bei "for (int i = 0; i < s.length(); i++) {" esrtmal alles aus,"

wer ist der? worum gehts überhaupt? ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben