Der folgende Quellcode lässt sich fehlerfrei compilieren, doch beim ausführen meldet java folgende Fehlermedlung: Exception in thread "main" java.lang.StringIndexOutOfBoundsException:String Index out of range:7.
Ich fand heraus, dass die System.out.println Methode innerhalb des Strings die richtigen Werte ausgibt,doch wenn ich am Ende der Schleife die Länge der Einzelnen Namen ausgebne möchte erscheint die oben erwähnte Fehlermeldung. Ich habe gesucht (auch über Google), fand ähnliche Probleme doch konnte keine Lösung finden. Wahrscheinlich ist es ein völlig trivialer Fehler (Zum beispiel String Länge negativer Wert)...Für Tipps wäre ich sehr dankbar...
hier der Code:
Java:
importjava.io.*;classNamen{publicstaticvoid main (String[] args )throwsIOException,StringIndexOutOfBoundsException{BufferedReader stdin =newBufferedReader(newInputStreamReader(System.in));StringEinlesen;int zaehler =0;int laengeV =0;System.out.println("Geben sie ihren Namen ein");Einlesen= stdin.readLine();Einlesen=Einlesen.trim();while((Einlesen.length())>= zaehler){char finden =Einlesen.charAt(zaehler);if( finden==' ')
laengeV = laengeV + zaehler;
zaehler++;}System.out.println("Die Laenge des Vornamens betraegt"+laengeV);}}
ich habe fast das gleiche Thema,aber in meiner aufgabe wird nicht die länge gesucht,sondern wenn der anwender vor- und nachname eingibt, Vorname, so wie er eingegeben wurde, ausgibt und den Nachnamen in Großbuchstaben ausgibt.
dafür muss ich die Methoden:
* public char charAt(int index)
* public String substring( int startIndex ) bzw.
* public String substring( int startIndex, int endIndex )
benutzen..
ich sitze seit 3 stunden hier,aber hab keine ahnung wie es geht.
Für Tipps wäre ich auch sehr dankbar.
Weißt du denn, was die drei Operationen machen? Wenn ja, versuch sie mal kurz zu beschreiben.
Die andere Frage ist, wie der Name eingegeben werden soll. Vorname[Leerzeichen]Nachname? Da wirds problematisch, zu unterscheiden, was Vor- und was Nachname ist, schließlich kann man mehrteilige Vor- und Nachnamen haben (z. B. "Karl Theodor Maria Nikolaus Johann Jacob Philipp Franz Joseph Sylvester Freiherr von und zu Guttenberg"; höhö, den Namen einfach ohne Quellenangabe kopiert ).
:lol: nein,so große name muss ich nicht angeben..
die ausgabe sieht so aus:
Geben Sie Ihren Namen ein:
Sherlock Holmes
Sherlock HOLMES
was operationen betrifft,ich weiß was substring( int startIndex ) bzw.
substring( int startIndex, int endIndex ) machen,was charAt(int index) macht weiß ich auch ungefähr aber wie ich das im meinem programm benutze,weiß ich nicht... ???:L
System.out.println("Geben Sie Ihren Namen ein: ");
name = stdin.readLine();char finden = name.charAt(zaehler);if(finden ==' '){String sub = name.substring(0, finden);String sub1 = name.substring((finden +1), name.length());String name1 = sub + sub1.toUpperCase();System.out.println(name1);}
Du brauchst eine Schleife, die zaehler solange erhöht, bis ein Leerzeichen gefunden wurde (oder der String zuende ist). Und in den substring-Anweisungen muss nicht das Zeichen, sondern die Position des Zeichens (also zaehler) als Index eingesetzt werden.