Ciao a tutti raga, potete darmi una mano a svolgere questo esercizio: data in input (da console) una stringa dire se è costituita da caratteri tutti diversi tra loro. Grazie in anticipo per l'aiuto.
Ciao a tutti raga, potete darmi una mano a svolgere questo esercizio: data in input (da console) una stringa dire se è costituita da caratteri tutti diversi tra loro. Grazie in anticipo per l'aiuto.
Quali sono i problemi che incontri?
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Non so come fare per vedere se i caratteri sono tutti diversi tra loro
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Dopo che sono arrivato qui cosa dovrei fare?
codice:package caratteridiversi; import java.util.Scanner; public class caratteridiversi { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); String s; System.out.println("Inserisci una stringa"); s=in.nextLine(); for(int i=0;i<s.length();i++) { for(int c=0;c<s.length();c++) { } } } }
Dovresti confrontare il carattere i-esimo con ciascun carattere c-esimo.
Occhio però che il ciclo interno non deve partire da zero ma dalla posizione successiva ad i (che per tale motivo deve fermarsi un'iterazione prima).
String ti fornisce charAt(indice) per ottenere il carattere in un certa posizione.
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Dopo che sono arrivato qui che faccio?
codice:package caratteridiversi; import java.util.Scanner; public class caratteridiversi { public static void main(String[] args) { // TODO Auto-generated method stub @SuppressWarnings("resource") Scanner in=new Scanner(System.in); String s; System.out.println("Inserisci una stringa"); s=in.nextLine(); int a; for(int i=0;i<s.length();i++) { a=s.charAt(i); for(int c=0;c<s.length();c++) { if(a!=s.charAt(c)) { } } } } }
Osservazioni:
1. perché memorizzi il risultato della charAt in una variabile int? Non credo sia un errore ma... che motivo c'è? Puoi utilizzare una variabile char oppure anche nessuna variabile e fare il confronto diretto
2. andbin ti aveva detto una cosa specifica: confronti ogni carattere con i SEGUENTI, quindi il ciclo for esterno deve arrivare fino al penultimo carattere, mentre quello interno deve partire dal carattere successivo (quindi in posizione i+1) ed arrivare fino all'ultimo
![]()
Grazie per la risposta, dopo che ho fatto così come faccio a dire se la stringa è composta da caratteri tutti diversi?
codice:package caratteridiversi; import java.util.Scanner; public class caratteridiversi { public static void main(String[] args) { // TODO Auto-generated method stub @SuppressWarnings("resource") Scanner in=new Scanner(System.in); String s; System.out.println("Inserisci una stringa"); s=in.nextLine(); int a; for(int i=0;i<s.length()-1;i++) { a=s.charAt(i); for(int c=i+1;c<s.length();c++) { if(a!=s.charAt(c)) { } } } } }
Dai, fai uno sforzo! Appena trovi due caratteri uguali puoi subito dire che la stringa non è composta da caratteri tutti diversi. Invece se arrivi in fondo ai tuoi cicli for senza aver trovato nemmeno una coppia di caratteri uguali allora puoi concludere che la stringa è formata da caratteri tutti diversi. Lo puoi realizzare in molti modi: utilizzando un bool, una funzione che restituisce un bool, ...