String splitten + Zählen

Was jetzt da noch dein Freund grossartig gemacht hat naja KA, ist ja eigentlich das gleiche wie auf der Seite.
Aber die Fehlermeldung zu wissen ware gut gewesen ^^
Wenn du
Java:
system.out.println(array[1]);
machst, kommt wohl nen Fehler, weil das Array ja net unbedingt an Position 1 was stehen hat. Oder wenn es wirklich so steht wie du geschrieben hast, weil du "system" klein geschrieben hast ^^
Mach am besten in der For-Schleife das mit
Java:
System.out.println(array[i]);
 
Warum nicht einfach wie folgt:

Java:
public class Splitten 
{
	public static void main(String[] args)
	{
		String wort="abc";
		char[] array = wort.toCharArray();
	}
}
 
Zuletzt bearbeitet von einem Moderator:
Klar ist auf jeden Fall kuerzer und wohl auch effektiver.
Aber es gibt viele Methoden und Wege ^^
 
Warum nicht einfach wie folgt:

Java:
public class Splitten 
{
	public static void main(String[] args)
	{
		String wort="abc";
		char[] array = wort.toCharArray();
	}
}

Muss da nicht noch die Arraylänge angegeben werden?

Ach ja, den Fehler habe ich gefunden, in meiner Methode musste es heißen i=0; i<wort.length(). So, jetzt hab ich wenigstens ne Grundlage, hoffe meinem Lehrer wird es gefallen :)
 
Zuletzt bearbeitet von einem Moderator:
Nein, toCharArray ist eine Methode vom Objekt String und das Objekt kennt seine Länge selbst - sie muss also nicht explizit übergeben werden.

Hier ein Auszug vom Java-Source der Klasse String:

Java:
    /** The count is the number of characters in the String. */
    private final int count;

    /**
     * Returns the length of this string.
     * The length is equal to the number of 16-bit
     * Unicode characters in the string.
     *
     * @return  the length of the sequence of characters represented by this
     *          object.
     */
    public int length() {
        return count;
    }

    /**
     * Converts this string to a new character array.
     *
     * @return  a newly allocated character array whose length is the length
     *          of this string and whose contents are initialized to contain
     *          the character sequence represented by this string.
     */
    public char[] toCharArray() {
	char result[] = new char[count];
	getChars(0, count, result, 0);
	return result;
    }
 
Zuletzt bearbeitet von einem Moderator:
So hab jetzt ja das Grundgerüst gehabt und hab das noch etwas ausgearbeitet. Jetzt werden die Buchstaben gezählt und in ein neues Array mit absoluter Häufigkeit gepackt. Hab das jetzt einfach mal provisorisch gemacht gibts da noch Verbesserungsvorschläge

Code:
public class Splitten 
{
	int buchstaben[]=new int[26];
	
	public static void main(String[] args)
	{
		new Splitten();
	
	}
	
	public Splitten()
	{
		for(int i=0;i<26;i++)
		{
			buchstaben[i]=0;
		}
			
		String wort="Das ist ja toll";
		wort=wort.toUpperCase();
		for (int i=0; i<wort.length(); i++)
		{
		    char buchstabe=wort.charAt(i);
		    int ascii=(int)buchstabe-65;
		    if(ascii>=0 && ascii<26)
		    buchstaben[ascii]++;
			
		}
		
		for(int i=0;i<26;i++)
		{
			System.out.println("Buchstabe:"+(char)(i+65)+" :"+buchstaben[i]);
		}
	}
}
 
Statt in den for schleifen die 26 zu schreiben koenntest du Buchstaben.length machen.
Und du koenntest natuerlich das mit dem toCharArray() umsetzen.
 
Statt in den for schleifen die 26 zu schreiben koenntest du Buchstaben.length machen.
Und du koenntest natuerlich das mit dem toCharArray() umsetzen.

Das Array hat aber eine feste Länge von 26, da das Alphabet 26 Buchstaben hat. Für jeden Buchstaben also einen Platz...

Und mit dem toCharArray() brauche ich ja eigentlich nicht, da - wenn ich das richtig verstanden habe - jeder String schon ein Array ist. Das benutze ich jetzt ja...

MfG Zer0Puma
 
Zurück