zeichenketten

lwqyt

Mitglied
Hey meine Aufgabe ist :

Zu einem englischen Substantiv kann sehr leicht der Plural gebildet werden, wenn man die folgenden Regeln anwendet:
• Endet das Wort in s, x, z, ch oder sh, dann wird "es" angehängt.
• Endet das Wort in einem y, vor dem ein Konsonant steht, so wird "ies" angehängt.
• In allen anderen Fällen wird lediglich ein "s" angehängt.
Schreiben Sie ein Programm, das einen String einliest, überprüft und den Plural bildet.

Jedoch ist mein Problem jetz das ich net weiß wie man das mit den letzten beiden buchstaben macht, undzwar bei ch und sh, habe es schon mit nem zusätzlichen switch in nem case probiert doch das hat auch net geklappt.
mein quellcode ist :

Java:
import java.io.*;
public class Aufgabe5 
{
	public static void main(String[]args)
	throws IOException
	{
		String endung;
		int laenge;
		
	    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	    
	    System.out.println("Programm um zu einem englischen Substantiv sein Plural zu bilden");
	    System.out.println("Bitte nur klein Buchstaben");
	    System.out.println("Das Wort eingeben das im Plural neu gebildet werden soll ");
	    endung=input.readLine();
	    
	    laenge = endung.length();
	    String zeichenz = endung.substring(laenge-1,laenge);
	    String zeichenz2=endung.substring(laenge-2,laenge);
	    
	    
	    switch (zeichenz)
	    {
	    case "s" :
	    case "x" :
	    case "z" :
	    			String zeichena1=endung.substring(0,laenge-1);
	    			System.out.println();
	    			System.out.println("Die Plural Form ist "+zeichena1+"es");break;
	    case"y" :
	    			String zeichena=endung.substring(0,laenge-1);
	    			System.out.println();
	    			System.out.println("Die Plural Form ist "+zeichena+"ies");break;

	    default :
	    			String zeichena2=endung.substring(0,laenge-1);
	    			System.out.println();
	    			System.out.println("Die Plural Form ist "+zeichena2+"s");    
	    }
	}
}

danke schonmal für eure hilfe.

mfg. jojo
 
N

nillehammer

Gast
Vielleicht bist Du hier mit endsWith und ein paar ifs besser bedient. Am besten noch in eine statische Hilfsmethode ausgelagert, könnte das so aussehen:
Java:
static String buildPlural(String word) {

  if(word.endsWith("s") || word.endsWith("x") || ...) {
    return word + "es";
  }

  ...
}
Die ganz hohe Schule wären Regular Expressions, wobei hier vielleicht noch etwas übertrieben. Dein Ansatz, den letzten Buchstaben auszulesen, führt in die Sackgasse, weil Du in zu vielen Fällen auch den vorletzten Buchstaben berücksichtigen musst.
[EDIT]
Ich merke gerade, dass der Punkt hier:
  • Endet das Wort in einem y, vor dem ein Konsonant steht, so wird "ies" angehängt.
möglicherweise doch den einsatz von Regular Expressions rechtfertigt. Dürft Ihr die benutzen.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Phash

Top Contributor
Servus

ich wuerde dir empfehlen eine Methode zu bauen, die "String liefereDenPlural(String pSingular)" heisst

diese Methode liefert den richtigen Plural (das nehmen wir erstmal an)
dann kannst du dein Programm soweit bauen, dass es alles andere korrekt macht.

Nun kuemmern wir uns um den Plural.
Java:
String liefereDenPlural(String pSingular){

  if (pSingular == null || pSingular.length < 2)
throw new WortZuKurzException(); // alternativ auch einfach null... 

   if (pSingular.substring(pSingular.length -1).equals("y"){
   return pSingular.substring(0,pSingular.length -1) + "ies";
} 
if (pSingular.substring(pSingular.length -2).equals("ch") || pSingular.substring(pSingular.length -2).equals("es"))
   return pSingular.substring(0,pSingular.length -2) + "es"; 

if (pSingular.substring(pSingular.length -1).equals("s") || pSingular.substring(pSingular.length -1).equals("x") ||
   pSingular.substring(pSingular.length -1).equals("z") )
   return pSingular.substring(0,pSingular.length -1) + "es"; 

return  pSingular + "s"; 
}
 

Ähnliche Java Themen

Neue Themen


Oben