Nachfrage zu Zeichenketten

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
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?
 
sorry. meinte mit den Kleinbuchstaben bei " return str.toLowerCase(); "
 
> 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 😉
 
ok danke, der vokal array ist dafür da, das er mir zum schluss ausgibt wieviele vokale halt in meinem eingegebenen text enthalten sind.
 
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???
 
stilistisch nicht schön, aber im Großen und Ganzen richtig, ja
 
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.

Neue Themen


Zurück
Oben