Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[java] consonanti

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] [java] consonanti

Messaggioda Foto Utenteel92 » 20 mar 2015, 18:00

Ciao sto provando a svolgere un semplicissimo esercizio...che mi sta mandando completamente in crisi..allora devo valutare se in una parola,ci sono delle consonanti.
Codice: Seleziona tutto
import java.util.Scanner;
class Consonanti{
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
String s=sc.nextLine();
char[] vocali={'A','E','I','O','U'};
for(int pos=0;pos<s.length();pos++){//pos parola

      if((s.charAt(pos)==(vocali[pos]))){
      break;
   }else
      System.out.println(s.charAt(pos));
   }
}
}

Il punto è che il programma mi stampa tutto quello che inserisco in input.perché come posso modificare il programma? :cry:
Avatar utente
Foto Utenteel92
5 2
 
Messaggi: 28
Iscritto il: 10 feb 2015, 13:50

0
voti

[2] Re: [java] consonanti

Messaggioda Foto UtenteRussell » 20 mar 2015, 18:08

el92 ha scritto:if((s.charAt(pos)==(vocali[pos]))){


stai confrontdo la (esempio) 7-ma lettera della parola fornita con la 7-ma vocale... ti dice niente questo? :mrgreen:
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[3] Re: [java] consonanti

Messaggioda Foto UtenteIla » 20 mar 2015, 18:15

Stai confrontando il carattere della stringa in posizione 'pos' con la vocale nella posizione 'pos' dell'array di vocali [e questo vedo che è già stato detto mentre scrivevo ;-) ];
finché provi con 'prova' non va neanche in errore, con una stringa più lunga di 5 dovrebbe darti errore, e in ogni caso l'operazione corretta sarebbe confrontare ogni carattere della stringa con tutte e 5 le vocali, quindi con un sottociclo (non mi ricordo se in java si può dire 'if s.charAt(pos) in vocali' come in altri linguaggi). Inoltre le vocali sono maiuscole, per cui dovresti trasformare la stringa in input tutta in maiuscolo.
Avatar utente
Foto UtenteIla
95 2
New entry
New entry
 
Messaggi: 71
Iscritto il: 9 gen 2014, 16:44

0
voti

[4] Re: [java] consonanti

Messaggioda Foto Utenteel92 » 20 mar 2015, 18:53

Ciao grazie a tutti per le risposte :mrgreen: alla fine ho risolto con switch:
Codice: Seleziona tutto
import java.util.Scanner;
class Consonanti{
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
String s=sc.nextLine();
String d=s.toUpperCase();
for(int pos=0;pos<d.length();pos++){//pos parola
   char t=d.charAt(pos);
   switch(t){
      case'A':
      case'E':
      case'I':
      case'O':
      case'U':
      break;
      default:System.out.println(d.charAt(pos));      
   }
}
}
}

Viene tutto solo che mi chiedo...non posso utilizzare un array con dentro tutte le vocali?Come potrei fare?Utilizzare l'array mi sembra più "elegante" :?
Avatar utente
Foto Utenteel92
5 2
 
Messaggi: 28
Iscritto il: 10 feb 2015, 13:50

0
voti

[5] Re: [java] consonanti

Messaggioda Foto UtenteRussell » 20 mar 2015, 19:00

el92 ha scritto:non posso utilizzare un array con dentro tutte le vocali?


In effeti la prima soluzione dava l'idea di qualcosa di piu' elegante
certo che puoi usare un array... anzi probabilmente devi! :mrgreen:
il codice da te postato andava nella giusta direzione, solo che ti abbiamo segnalato un errore
tu l'hai abbandonato, ma in realtà era facile intervenire e correggere
in pratica bastano 2 loop uno dentro l'altro
il primo scorre le lettere della parola (indice pos1)
il secondo le vocali nell'array (indice pos2)
a quel punto il gioco è (quasi) fatto ;-)
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[6] Re: [java] consonanti

Messaggioda Foto Utenteel92 » 21 mar 2015, 13:44

Ciao grazie per le risposte...scusa se ti rompo ancora...ho riprovato a fare l'esercizio con gli array
Codice: Seleziona tutto
import java.util.Scanner;
class Consonanti{
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
String s=sc.nextLine();
String d=s.toUpperCase();
char y[]={'A','E','I','O','U'};
char e=' ';
for(int pos=0;pos<d.length();pos++){//pos parola
   for(int pos1=0;pos1<y.length;pos1++)
      if(d.charAt(pos)!=(y[pos1])){
         e=d.charAt(pos);
      }
}
System.out.println(e);
}
}

Non riesco a capire come posso far si che d.charAt(pos) analizzi tutte le posizioni dell'array,senza che mi stampi le stesse lettere. :cry:
Avatar utente
Foto Utenteel92
5 2
 
Messaggi: 28
Iscritto il: 10 feb 2015, 13:50

0
voti

[7] Re: [java] consonanti

Messaggioda Foto UtenteRussell » 21 mar 2015, 18:44

io pensavo a qualcosa del genere :mrgreen:
Codice: Seleziona tutto
for(int pos=0;pos<d.length();pos++){//pos parola
   contienevocale=false;
   for(int pos1=0;pos1<y.length;pos1++){
      if(d.charAt(pos)==(y[pos1])){
         contienevocale=true;
      }
   }
   if(! contienevocale){
      e=d.charAt(pos);
   }
}
System.out.println(e);
}
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[8] Re: [java] consonanti

Messaggioda Foto Utenteel92 » 21 mar 2015, 19:21

ah ok quindi si risolve con l'aiuto dei valori booleani...grazie 1000 sei stato davvero gentilissimo :mrgreen: O_/
Avatar utente
Foto Utenteel92
5 2
 
Messaggi: 28
Iscritto il: 10 feb 2015, 13:50

0
voti

[9] Re: [java] consonanti

Messaggioda Foto UtenteRussell » 21 mar 2015, 19:26

volendo si potrebbe fare anche cosi'
evitando quindi di allocare ulteriori varibili
ogni tanto uso questo metodo, ma bisogna stare attenti

Codice: Seleziona tutto
for(int pos=0;pos<d.length();pos++){//pos parola
   for(int pos1=0;pos1<y.length;pos1++){
      if(d.charAt(pos)==(y[pos1])){
         break;
      }
   }
   if(pos1==y.length){
      e=d.charAt(pos);
   }
}
System.out.println(e);
}

In pratica puoi controllare l'indice che scorre le vocali
essendo sicuro che avendola trovata una interromperai il ciclo (vedi break), allora hai la garanzia che se pos1 è arrivato fino alla fine della sua corsa sicuramene non hai trovato una vocale
funziona... ma ripeto che è un metodo delicato, e va saputo padroneggiare bene
(inoltre rende il codice anche meno leggibile)
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[10] Re: [java] consonanti

Messaggioda Foto Utenteel92 » 23 mar 2015, 20:37

Ciao alla fine ho risolto utilizzando una variabile booleana prima del ciclo.. grazie per la risposta sei stato davvero molto gentile :D O_/
Avatar utente
Foto Utenteel92
5 2
 
Messaggi: 28
Iscritto il: 10 feb 2015, 13:50

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti