Leggere da tastiera delle stringhe fino a che viene inserita una stringa di lunghezza maggiore di 10 (da non considerare). Quindi stampare tutte le stringhe che contengono un numero di vocali maggiore della media. Ad esempio, se leggo le stringhe:
CIAO Marti
!?!
a Successivamente
La media e` (5+0+1)/3 = 2, quindi va stampata solo la stringa: Ciao Marti
perche´ contiene 5 > 2 vocali.
Questo è il mio script, mi manca solo come stampare le stringhe con somma maggiore della media, pensavo di crearmi un array di interi in cui salvare le somme che ho chiamato sum[count] e poi associarlo all' indice della stringa che voglio stampare ma forse mi sto perdendo in un bicchier d'acqua… Ho inserito dei system out giusto per avere un fac simile di debug nel cmd..
import java.util.*;
public class Es1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = new String();
int count = 0;
ArrayList<String> stringa = new ArrayList<>();
do {
System.out.println("scrivi una parola: ");
s = scan.nextLine();
if (s.length() < 10) {
stringa.add(s);
count++;
}
} while (s.length() < 10);
System.out.println("Stringa: " + stringa);
String[] strvocali = new String[count];
for (int i = 0; i < count; i++) {
strvocali[i] = stringa.get(i);
strvocali[i] = strvocali[i].toLowerCase();
System.out.println("Array di stringhe: " + strvocali[i]);
}
int temp = 0;
int somma = 0;
double media = 0;
int[] sum = new int[count];
for (int i = 0; i < count; i++) {
somma = 0;
for (int j = 0; j < strvocali[i].length(); j++) {
temp = 0;
if ((strvocali[i].charAt(j) == 'a') ||
(strvocali[i].charAt(j) == 'e') ||
(strvocali[i].charAt(j) == 'i') ||
(strvocali[i].charAt(j) == 'o') ||
(strvocali[i].charAt(j) == 'u')) {
temp++;
}
somma += temp;
System.out.println("somma: " + somma);
}
sum[i] = somma;
System.out.println("sum[i]: " + sum[i]);
}
media = somma / count;
System.out.println("media: " + media);
}
}