Just nu i M3-nätverket
Gå till innehåll

Java: Fel men ändå inte


Enacleb

Rekommendera Poster

Hej!

 

Skriver ett litet program till ett skolarbete som ska innehålla metoder. Uppgiften är att skriva ett program där man matar in ett ord eller en mening, och den ska sedan översättas till rövarspråket. Mitt problem är att programmet översätter allt korrekt, inga fel eller så, men jag får ett error-meddelande på slutet, ser väldigt fult ut.

 

Felet jag får är:

 

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 21

at java.lang.String.charAt(String.java: 686)

at Rovar.RovarCheck(Rovar.java: 23)

at Rovar.main(Rovar.java: 10)

 

 

Bifogar programmet här:

 

public class Rovar2 {
public static void main(String[] args) {

	for(int k = 0; ; k++) {

		System.out.print("Skriv in vad du vill översätta till rövarspråket: ");

		String svar = Keyboard.readString();

		RovarCheck(svar);

	}


}

static void RovarCheck(String svar) {

	for(int i = 0; i <= svar.length(); i++) {

		char bokstav = svar.charAt(i);

		if(bokstav == 'a' || bokstav == 'e' || bokstav == 'i' || bokstav == 'o' || bokstav == 'u' || bokstav == 'y' || bokstav == 'å' || bokstav == 'ä' || bokstav == 'ö' || bokstav == 'h' || bokstav == ' ') { 

			System.out.print(bokstav);

		} else {

			System.out.print(bokstav + "o" + bokstav);

		}

	}

}

}	
}

Länk till kommentar
Dela på andra webbplatser

for(int i = 0; i <= svar.length(); i++) {

Din sträng börjar väll på position 0. Vilket betyder att om vi skickar in tre tecken så kommer dessa ha position 0, 1 och 2. Men din loop loopar på mindre eller lika med length. Vilet betyder att den kommer loopa fram till 3. Trots att det inte finns en position 3.

 

Jag antar att java fungerar så i alla fall. Prova loopa på i < svar.length

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...