ubuntuusers.de

Java: "String index out of range: 0" Fehlermeldung

Status: Gelöst | Ubuntu-Version: Ubuntu 13.10 (Saucy Salamander)
Antworten |

holzhacker3000

Avatar von holzhacker3000

Anmeldungsdatum:
17. August 2012

Beiträge: 38

Wohnort: /home/max

Hi Leute,

ich hab so ein Java-Buch mit Aufgaben drin und bei der einen soll ich jetzt von einem eingelesenen String (nur Buchstaben) alle Vokale löschen. Das wollte ich wiefolgt machen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package uebung08;

import javax.swing.JOptionPane;

public class Vokalloescher {
    public static void main(String[] args) {
	String eingabe = JOptionPane.showInputDialog("String eingeben: ");
	int laenge = eingabe.length();
	StringBuffer vokalloescher = new StringBuffer(laenge);
	int counter = 0;
	int zaehler = 0;
	
	while (counter < laenge) {
	    char buchstabe = eingabe.charAt(counter);
	    switch (buchstabe) {
	    	case 'a':
	    	case 'e':
	    	case 'i':
	    	case 'o':
	    	case 'u':
	    	case 'A':
	    	case 'E':
	    	case 'I':
	    	case 'O':
	    	case 'U':
	    	    break;
	    	default:
	    	    vokalloescher.setCharAt(zaehler, buchstabe);
	    	    zaehler++;
	    }
	    counter++;
	}
	JOptionPane.showMessageDialog(null, eingabe + " " + vokalloescher);
    }

}

Ich will also alle Konsonanten in ein StringBuffer packen und den am Ende ausgeben. Und jetzt checke ich die Fehlermeldung nicht. Kann mir jemand helfen?

Max

PS: ich hab als Testewort "max" genommen.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ich würde diese Verrenkungen sein lassen und stattdessen die replaceAll-Methode der string-Klasse nutzen 😉

Und wenn Du es so umständlich handhaben willst, nutze doch die sinnvolle append-Methode von StringBuffer:

1
vokalloescher.append(buchstabe);

Hättest Du durch Debuggen übrigens auch drauf kommen können 😛

holzhacker3000

(Themenstarter)
Avatar von holzhacker3000

Anmeldungsdatum:
17. August 2012

Beiträge: 38

Wohnort: /home/max

Danke! Ich gebs zu, ich war dumm 😀

Und zu den "Verrenkungen", ich hab halt dieses Buch mit dem ich Java lerne, und da gibts sowas nicht drinne, vielleicht auch noch nicht...

max

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Alternativ eben händisch, aber mit Regular Expression und netter foreach Schleife:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package Vowels;

import javax.swing.JOptionPane;

public class VowelReplacer {

	public static void main(String[] args) {
		String input = JOptionPane.showInputDialog("String eingeben: ");
		StringBuffer result = new StringBuffer();
		for (char c : input.toCharArray()) {
			if(String.valueOf(c).matches("[^aeiouAEIOUäöüÄÖÜ]"))
			{
				result.append(c);
			}
		}
		JOptionPane.showMessageDialog(null, input + " " + result.toString());
	}

}
Antworten |