Java-nybörjare, problem med charAt(), å ä ö
Tjo!
Jag har ganska nyligen börjat med en programmeringskurs på högskolan och fått en liten övningsuppgift i skolan för att latja runt lite med Java och lära mig grunderna. Jag har dock stött på ett problem vid användandet av
String.charAt();
tillsammans med å ä ö.
När jag kör programmet i Eclipse 4.2.1 (Mac OSX 10.8.2), med Java 1.7, så helt enkelt vägrar programmet räkna några av å ä ö som vokaler, utan räknar hellre dem två gånger vid användning av
String.length();
Uppgift i skrift:
Räkna vokaler
Skriv ett litet Java-program som ber användaren att mata in en textsträng och som sedan skriver ut hur många tecken
som fanns i textsträngen samt hur många vokaler som fanns. Räkna här med svenska bokstäver,
alltså vokalerna a, e, i, o, u, y, å, ä och ö.
Givetvis skall det inte spela någon roll om man skriver små eller STORA bokstäver, alltså är både a och A en vokal.
När programmet körs kan det t.ex. se ut så här:
Skriv en rad: Hej hopp, detta är min textrad - RÄKSMÖRGÅS!!!
Raden innehöll 46 teckan varav 11 var vokaler
Kod jag skrivit hittills:
import java.util.Scanner;
public class CountingVowels {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Skriv en rad: ");
String userText = sc.nextLine();
int sumVowels = 0;
int vowelIndex;
for (vowelIndex = 0; vowelIndex < userText.length(); vowelIndex++) {
switch (userText.charAt(vowelIndex)){
case 'a':
case 'A':
case 'o':
case 'O':
case 'u':
case 'U':
case 'å':
case 'Å':
case 'i':
case 'I':
case 'e':
case 'E':
case 'y':
case 'Y':
case 'ä':
case 'Ä':
case 'ö':
case 'Ö':
sumVowels++;
break;
default:
break;
}
}
System.out.println("Raden innehöll " + userText.length() + " tecken varav " + sumVowels +" var vokaler");
}
}
Vid körning:
Skriv en rad: ååååå
Raden innehöll 10 tecken varav 0 var vokaler
Fungerar utmärkt vid alla andra tecken:
Skriv en rad: Tycker du som jag?
Raden innehöll 18 tecken varav 5 var vokaler
Jag blir tokig! Hur kan jag lösa detta? En av mina studiekamrater har samma problem, och läraren hade inget bra svar.