Löschen der Vokale

coldstone

Bekanntes Mitglied
Hallo liebe java freunde,

Habe folgende Aufgabe zu lösen.

"Hallo Schreiben Sie eine Java-Methode mit der Signatur String deleteSmallVowels(String s),
die aus einer als Parameter übergebenen Zeichenkette durch Löschen aller Vorkommen der kleinen
Vokale ”a“, ”e“, ”i“, ”o“ und ”u“ eine neue Zeichenkette bildet.
Die neue Zeichenkette soll als Ergebnis von deleteSmallVowels zurückgeliefert werden.

Beispiel: deleteSmallVowels("Apfelsaft") liefert die Zeichenkette Apflsft zurück.

Siedeln Sie Ihre Methode außerdem in einer beliebig benannten Klasse an, und rufen in deren main-
Methode deleteSmallVowels mindestens dreimal in geeigneter Weise auf."


Ist "deleteSmallVowels" eine String Methode? Ich finde nirgends etwas darüber?
Oder ist es nur eine Bezeichnung die man verwenden soll für die Aufgabe?
 
Java:
public class loeschen {
	
	public static void deleteSmallVowels(String s) {
		
	String test = "Apfelsaft";
	System.out.println(test.replaceAll("a","e"));	
	}
	
	public static void main(String[] args) {
		
		deleteSmallVowels("Apfelsaft");
	}
}

Ich bekomme "Apfelseft" ausgegeben. Müsste der compiler eigentlich nicht a und e löschen?
 
die ReplaceAll-Methode ersetzt nicht die beiden Zeichen "a" und "e" sondern "a" durch "e" ...
Für dein Vorhaben müsstest du also schreiben:
Java:
replaceAll(zeichen, "");
wobei zeichen halt einer der Vokale ist
 
OK, gibt es den eine String methode, mit der ich sagen kann "Entferne diese xxxxxxx Buchstaben aus dem String." ??? Oder muss ich eine schleife bilden?
 
Compiler ? Wikipedia

Deine Methode hat nicht die Signatur
Code:
String deleteSmallVowels(String s)
.

Müsste der compiler eigentlich nicht a und e löschen?
Warum? Was steht denn in der Dokumentation von
Code:
replaceAll()
?

Es gibt zahlreiche Möglichkeiten, das zu erreichen. Eine (meines Erachtens nicht elegante) wäre der Gebrauch von
Code:
replaceAll()
:
Java:
String deleteSmallVowels(String s) {
    return s.replaceAll("[aeiou]", ""); // regulärer Ausdruck
}

Am besten machst du das mit den grundlegenden Methoden, die String anbietet.
 
Zuletzt bearbeitet:
das hier ist die Lösung deiner Aufgabe:

Java:
String deleteSmallVowels(String s) {
    return s.replaceAll("[aeiou]", ""); // regulärer Ausdruck
}

insgesamt kann es dann so aussehen:

Java:
public class Loeschen {

    public static String deleteSmallVowels(String s) {
        return s.replaceAll("[aeiou]","");   
    }
    
    public static void main(String[] args) {
        String test = "Apfelsaft";
        String result = deleteSmallVowels(test);
        System.out.println(result);
    }
}
 
Zuletzt bearbeitet:
OK habs mal jetzt so zusammengebastelt.

Java:
public class loeschen {
	
	static String deleteSmallVowels(String s) {
	    return s.replaceAll("[aeiou]", ""); // regulärer Ausdruck
	}
	
	public static void main(String[] args) {
		
		deleteSmallVowels("Apfelsaft");
	}
}

Aber der kompiler gibt garnichts aus. Ist leer.

Bitte nicht gleich köpfen aber ist die main methode denn so korrekt?

Java:
deleteSmallVowels("Apfelsaft");


ok war zu schnell. mit dem obigen code klappt es. Danke.

Gibt es denn auch eine Lösung mit Schleifen? Weil meine überlegung wäre Apfelsaft als array zu erzeugen und einen array mit den umlauten aeiou zu erzeugen, um sie mit einer for schleife zu vergleichen?

Und werden Attribute immer in der main methode deklariert?
 
Zuletzt bearbeitet:
Gibt es denn auch eine Lösung mit Schleifen? Weil meine überlegung wäre Apfelsaft als array zu erzeugen und einen array mit den umlauten aeiou zu erzeugen, um sie mit einer for schleife zu vergleichen?
Sicher gibt hierzu verschiedene Lösungen per Schleife - und ich denke, dass eine solche Lösung erwartet wird.
String bietet ja verschiedene Methoden um eine solches Vorhaben zu realisieren. Der Link zur API Doku von String wurde ja schon gepostet.
 
Und werden Attribute immer in der main methode deklariert?
Nein, Variablen werden dort deklariert wo es Sinn macht. Sie sollten einen möglichst kleinen Geltungsbereich haben.
Um mal ganz kleinlich zu sein: In der main Methode kann man gar keine Attribute deklarieren. ;-) Wenn man von Attributen spricht, spricht man von Merkmalen eines Objekts - ebenfalls Instanzvariablen genannt.
 
Aber der kompiler gibt garnichts aus. Ist leer.

Bitte nicht gleich köpfen aber ist die main methode denn so korrekt?
Das liegt schlichtweg daran, dass du zwar die Methode deleteSmallVowels() aufrufst, aber das Ergebnis dieser Operation verwirfst bzw. nicht weiter nutzt. Probier einfach mal Folgendes aus:
Java:
System.out.println(deleteSmallVowels("Apfelsaft"));
 
Nein, Variablen werden dort deklariert wo es Sinn macht. Sie sollten einen möglichst kleinen Geltungsbereich haben.
Um mal ganz kleinlich zu sein: In der main Methode kann man gar keine Attribute deklarieren. ;-) Wenn man von Attributen spricht, spricht man von Merkmalen eines Objekts - ebenfalls Instanzvariablen genannt.

Ist dies keine deklaration?

Java:
   String test = "Apfelsaft";


Oder verstehe ich die Deklaration falsch?
 
Das ist Deklaration UND Definition.
Eine reine Deklaration wäre
Java:
String str;
Die Definition ist dann [JAVA=2]str = "Apfelsaft";[/code]
 
Wenn du deinem Lehrer/Dozenten erklären kannst, was reguläre Ausdrücke sind und wie der in der genannten Lösung funktioniert, dann sollte dir das genügen.

Wenn das nicht der Fall ist, solltest du es lieber mit einer Schleife,
Code:
charAt(int)
, Stringkonkatenation etc. probieren.
 
Das ist Deklaration UND Definition.
Eine reine Deklaration wäre
Java:
String str;
Die Definition ist dann [JAVA=2]str = "Apfelsaft";[/code]

Genauer genommen ist es keine Definition sondern eine initialisierung bzw Zuweisung, aber wie manns nennt es bleibt dasselbe.

Kleiner Tipp an den Themenstarter: Kannst ja mal die Funktion mit replaceAll bereithalten und zusätzlich eine Lösung über charAt anbieten.

kurz gesagt:

Java:
String result = "";
String mitVokalen = "Apfelsaft";
for(int i = 0; i<mitVokalen.length(); i++){
if(!mitVokalen.charAt(i).toLowerCase() == a){
result = result+mitVokalen.charAt(i);
}else{
// do nothing
}
}

EDIT: huch seltsame Dinge passieren
Das mit dem lowercase, ich weiss nicht obs bei chars geht bin grad zu faul zum schaun, zur not geht es mit Strings, da könntest du noich einen String zur Hilfe nehmen.
 
Zuletzt bearbeitet:

Zurück
Oben