|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
[java] stampare posizioni vocali "i"
ciao a tutti!
ho realizzato questo programma che mi consente di cercare le vocali "i" all'interno di una stringa: Codice:
System.out.print("Le posizioni della vocale i:");
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == 'i') {
System.out.print((i));
}}
Es, se digito: Mario Rossi Il risultato deve essere questo: 3,10 Come posso fare? Ciao e grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Codice:
System.out.println(i+","); Se concateni un intero ad una stringa (come nel tuo caso) l'intero viene convertito direttamente ad una stringa
__________________
Ultima modifica di luxorl : 05-07-2009 alle 19:32. |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
Il problema è che in questo modo viene stampata anche una seconda virgola:
Le posizioni della vocale i:3,10, |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Codice:
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == 'i') {
System.out.print((i));
if(i == (line.length()-1)) break;
System.out.print(",");
}
}
__________________
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
Ciao
Grazie, funziona! Però non ho capito che cosa fa questa porzione di codice: Codice:
if(i == (line.length()-1)) break;
System.out.print(",");
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
SE i è arrivato all'ultimo carattere della stringa ESCI DAL CICLO FOR (break) Stampa , In pratica ad ogni ciclo controlla se è alla fine della stringa, se è così esce immediatamente senza stampare la virgola se invece non è alla fine stampa la virgola break serve per uscire forzatamente dai cicli in qualsiasi momento.
__________________
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2001
Città: Firenze
Messaggi: 585
|
Quote:
Bisognerebbe, per ogni lettera 'i' trovata, innescare un altro controllo per percorrere il resto della stringa fino alla fine e vedere se effettivamente era l'ultima.
__________________
http://www.gnu.org/philosophy/no-wor...hments.it.html http://gprime.net/flash/postingandyou.php [1510 kB] |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Giusto.. che erroraccio
__________________
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Codice:
// char 'i' @ indexes: 1, 8, 16, 21
String input = "Siamo qui con voi a giocare";
// raccolgo indici come String in una lista
List<String> indexes = new ArrayList<String>();
for (int i = 0; i < input.length(); i++)
if (line.charAt(i) == 'i')
indexes.add(String.valueOf(i));
// stampo la stringa degli indici
if (indexes.size() > 0)
{
// stampo il primo e lo rimuovo dalla lista:
System.out.println(indexes.remove(0))
// stampo tutti gli altri separati dal carattere ','
for (String s : indexes)
System.out.println(", "+ s);
}
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Codice:
String line = "Ilaro RIssi";
boolean ultimaI = true;
System.out.print("Le posizioni della vocale i:");
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == 'i' || line.charAt(i) =='I') {
System.out.print((i));
for (int j = i+1; j < line.length(); j++) {
if (line.charAt(j) == 'i' || line.charAt(j) =='I') ultimaI = false;
}
if(ultimaI == true) break;
System.out.print(",");
ultimaI = true;
}
}
Ho inserito un ciclo interno che controlla se la "i" trovata è l'ultima in caso positivo interrompe tutto, se no stampa una virgola. Inoltre ho corretto la condizione dentro l'if di verifica se il char controllato è una "i"... perché non controllava le "I" maiuscole
__________________
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ma non sarebbe + leggibile con qualcosa del genere?
Codice:
System.out.print("Le posizioni della vocale i:");
string result = "";
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == 'i') {
result += line.charAt(i) + ", ";
}}
if (result.length > 0)
System.out.print(result.substring(0, result.length - 2);
__________________
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2001
Città: Firenze
Messaggi: 585
|
Quote:
__________________
http://www.gnu.org/philosophy/no-wor...hments.it.html http://gprime.net/flash/postingandyou.php [1510 kB] |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Codice:
result += line.charAt(i) + ", "; Codice:
result += String.valueOf(i) + ", ";
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Con la mia soluzione nel peggiore dei casi si ha complessità quadrata Qui il for resta uno solo
__________________
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:28.












Giusto.. che erroraccio








