Hejsan! En quick-n-dirty lösning är att efter for-loopen bara skriva: Men programmet skriver då ut mer än en rad. Skriver jag abba t.ex. så skriver programmet ut: att den skriver ut texten flera gånger måste bero på att du lagt utskriften inne i loopen.switch sats
Jag ska skriva ett program som räknar och skriver ut hur många förekomster det finns av vokalerna a, e, i, o, u och y i en sträng. Utskriften ska bli som nedan.
I Strängen finns:
1 st a:n
0 st e:n
1 st i:n
osv!
Koden som jag har skrivit än så länge är:
import cs1.Keyboard;
import java.util.*;
public class lab2_6
{
public static void main (String[] args)
{
final int VOKALER = 6;
int a=0, e=0, i=0, o=0, u=0, y=0;
int other = 10;
System.out.println("Mata in stranger: ");
String line = Keyboard.readString();
System.out.println("I strängen finns: ");
for (int ch=0; ch<line.length(); ch++)
{
switch(line.charAt(ch))
{
case 'a' : a++; break;
case 'e' : e++; break;
case 'i' : i++; break;
case 'o' : o++; break;
case 'u' : u++; break;
case 'y' : y++; break;
}
men jag vet inte hur jag ska få det utskrivet, och jag vet inte om koden är rätt!
Skulle vara jättetacksam över svar :)
/JennieSv: switch sats
System.out.println("I strängen finns:");
System.out.println(a + " st a:n");
System.out.println(o + " st o:n");
System.out.println(u + " st u:n");
System.out.println(e + " st e:n");
System.out.println(i + " st i:n");
System.out.println(y + " st y:n");
Betydligt snyggare är att bryta ut koden som räknar bokstäver till en egen metod.
/PerSv: switch sats
0 st a:n
1 st a:n
1 st a:n
2 st a:n
Vad menar du med att man ska sätta det i egen metod?? Hur gör man det?
/JennieSv: switch sats
Vänta med att lägga utskriften tills du har räknat färdigt eftersom det är först då som variablerna a, o, u ovs....har rätt värden.
Om du inte bryr dig om prestanda kan du enkelt lägga koden för att räkna förekomster av en bokstav i en sträng i en egen metod:
<code>
public int countLetters(String str, char letter) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == letter) {
count++;
}
}
return count;
}
</code>
och sen anropa den en gång för varje vokal:
<code>
String test = "abba";
System.out.println(countrLetters(test,'a') + " st a:n");
System.out.println(countrLetters(test,'o') + " st o:n");
</code>
Detta är inte alls optimalt rent prestandamässigt men det löser ditt lilla problem. För en lösning med bättre komplexitet krävs en lite mer avancerad metod.
/Per