SlideShare une entreprise Scribd logo
1  sur  30
Caratteri e Stringhe Unità didattica 4 Enrico Giunchiglia Gabriele Palma Fondamenti di Informatica
Carat t er i ,[object Object],[object Object],[object Object],[object Object],[object Object]
Tabella  ASCII  (standard) Il carattere  'O'   ha codice   79  ( riga   70  + col onna   9  =  79 ). O 9 70
Gestione di caratteri D ichiarazione ed inizializzazione char ch1;  char ch2 =  ' X ' ; Conversione  tra  int   e   char . uscitaDati.print( “ Codice  ASCII  di  X:  &quot; ); uscitaDati.printLine((int)  ' X '  ); uscitaDati.print(&quot; Codice  ASCII 88: &quot;); uscitaDati.printLine((char) 88 ); true perchè il codice  ASCII  di   'A'   è   65   e il codice di   'c'   è   99 . ' A '  <  ' c '
String he ,[object Object],[object Object],[object Object],[object Object],OutputBox uscitaDati = new OutputBox(...); uscitaDati.print( “Un messaggio“ );
Le stringhe sono  o ggetti in Java ,[object Object],[object Object],[object Object],String nome1; nome1 = new String(  &quot; Latte “  ); String nome1; nome1 = “Latte“; Queste istruzioni sono equivalenti .
Acce sso ai caratteri di una stringa ,[object Object],0 1 2 3 4 5 6 S u m a t r a String nome = “Sumatra“; char inNome = nome.charAt(3); nome Questa variabile si riferisce a tutta la stringa. nome.charAt( 3 ) Il metodo ritorna il carattere alla posizione 3.
Lunghezza di una stringa ,[object Object],str3   non corrisponde ad alcun oggetto.   String nome = “Sumatra“, str1 = “one“, str2 = ““, str3; nome.length( ); str1.length( ); str2.length( ); str3.length( ); 7 3 0 Error e !
Concatenazione di stringhe ,[object Object],[object Object],[object Object]
E sempio : cont eggio   di v o cali Queste istruzioni contano il numero di vocali nella stringa in ingresso (nome). String  nome = richiestaDati.getString(&quot; Nome ?&quot;); int numeroVocali = 0; for (int i = 0; i < nome.length(); i++) { char letter = nome.charAt(i); if (letter == 'a' || letter == 'A' || letter == 'e' || letter == 'E' || letter == 'i' || letter == 'I' || letter == 'o' || letter == 'O' || letter == 'u' || letter == 'U' ) { numeroVocali++; } } uscitaDati.print( &quot; il tuo nome ha  &quot; +   numeroVocali + &quot;  vocali &quot;);
E sempio : co nteggio di parole (1) String frase = richiestaDati.getString(“ Dammi una frase :&quot;); int nc = frase.length(); int indice = 0, numeroParole = 0; while (indice < nc) { // ignor a gli spazi bianchi while (frase.charAt(indice) == ' ') { indice++; } //  trova la fine della parola while (frase.charAt(indice) != ' ') { indice++; } //  un’altra parola trovata, incremento del contatore numeroParole++;  } Problem a :  Il ciclo più interno potrebbe assegnare ad  indice   un valore che eccede il massimo consentito (nc)
E sempio : cont eggio di parole  (2)  String frase = richiestaDati.getString(“ Dammi una frase :&quot;); int nc = frase.length(); int indice = 0, numeroParole = 0; while (indice < nc) { // ignor a gli spazi bianchi while ((indice < nc) && (frase.charAt(indice) == ' ')) { indice++; } //  trova la fine della parola while ((indice < nc) && (frase.charAt(indice) != ' ')) { indice++; } //  un’altra parola trovata, incremento del contatore numeroParole++;  } Problem a :  numeroParole  è maggiore di uno rispetto al conteggio corretto se la frase finisce con uno o più spazi.
Uguaglianza fra stringhe ,[object Object],[object Object],[object Object],[object Object],String x =  &quot;Alfa&quot;,  y =  &quot;alfa&quot;, z = &quot;beta&quot;; boolean r; int c; r = x.equals(y);  // r == false  r = x.equalsIgnoreCase(y); // r == true  c = y.compareTo(z);  // c < 0  c = x.compareTo(y);  // c < 0
E sempio :  confronto tra oggetti String   int  javaNum = 0; boolean ripeti = true; String  parola; while ( ripeti ) { parola = inDati.getString(“ Prossima parola :&quot;); if ( parola.equals(&quot;STOP&quot;) )  { ripeti = false; }   else if ( parola.equalsIgnoreCase(“Java&quot;) ) { javaNum++; } } Continu a a leggere le parole   e conta quante volte la parola  Java   appare nel testo in ingresso.
Uguaglianza  (==) vs. equals  (1) word1 == word2 word1.equals( word2 ) word1   e   word2  p untano allo stesso oggetto. word1 word2 String Java true true
Uguaglianza  (==) vs. equals  (2) word1 word2 word1 == word2 word1.equals( word2 ) word1   e   word2  p untano ad oggetti diversi con uguale contenuto. String Java true false String Java
Uguaglianza  (==) vs. equals  (3) word1 word2 word1 == word2 word1.equals( word2 ) word1   e   word 2  p untano ad oggetti diversi con diversi contenuti. String Java false false String Bali
Altri metodi della classe St ring Me todo Significato substring x.substring(n,m)  restituisce una stringa corrispondente alla porzione di x dalla posizione n alla posizione m String s = “Viva Java!”; String t = substring(1,3); // contiene “iva” trim x.trim()  restituisce una stringa con lo stesso contenuto di x privato di eventuali spazi all’inizio e alla fine startsWith x.startsWith(y)  restituisce true se x comincia con y String s = “Viva Java!”, t = “Viva”; boolean r = s.startsWith(t);  endsWith x.endsWith(y)  restituisce true se x termina con y String s = “Viva Java!”, t = “Java!”; boolean r = s.endsWith(t);   indexOf x.indexOf(c)  restituisce la posizione di c in x e  x.indexOf(c,n)  restituisce la posizione di c in x cominciando la ricerca dalla posizione n; entrambe restituiscono –1 se c non è presente in x (c di tipo char)
Classe StringBuffer ,[object Object],[object Object],[object Object],[object Object]
Metodi di StringBuffer Me todo Significato charAt x.charAt(n)  restituisce il carattere in posizione n (analogo alla classe String) length x.length()  restituisce il numeo di caratteri in x (analogo alla classe String) setCharAt x.setCharAt(n, c)  imposta il carattere in posizione n al valore c (c è di tipo char) deleteCharAt x.deleteCharAt(n)  cancella il carattere in posizione n append x.append(y)  concatena a x il contenuto di y reverse x.reverse()  rovescia il contenuto di x insert x.insert(n,y)  inserisce y all’interno di x a partire dalla posizione n delete x.delete(n,m)  cancella dalla posizione n alla posizione m toString y = x.toString()  restituisce il contenuto di x sotto forma di String (y è un oggetto String)
Utilizzo di  StringBuffer (1) Rimpiazza tutte le vocali dell’oggetto frase con  ' X ' String  frase = richiestaDati.getString(“ Frase :&quot;); StringBuffer temp = new StringBuffer(frase); for (int i = 0; i < temp.length(); i++) { char c = temp.charAt(i); if ( c == 'a' || c == 'A' || c == 'e' || c == 'E' ||   c == 'i' || c == 'I' || c == 'o' || c == 'O' ||   c == 'u' || c == 'U'  ) { temp.setCharAt(i, 'X'); } } uscitaDati.print(temp);
Utilizzo di  StringBuffer (2) Costruisce una frase con le sole parole di lunghezza pari String parola; StringBuffer temp = new StringBuffer(&quot;&quot;); boolean ripeti = true; while ( ripeti ) { parola = inDati.getString(“ Prossima parola :&quot;); if ( parola.equals(&quot;STOP&quot;) ) { ripeti = false; } else if ( parola.length() % 2 == 0 ) { temp.append(parola + &quot; &quot;); } } Aggiunge la parola e uno spazio a   tempStringBuffer .
StringBuffer vs. String ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conversione da String a tipi primitivi (1) ,[object Object],[object Object],[object Object],[object Object]
Conversione da String a tipi primitivi (2)  ,[object Object],[object Object],[object Object],[object Object]
Classe ResponseBox (javabook) ,[object Object],MainWindow  finestra = new MainWindow( ); ResponseBox  yesNoBox    = new ResponseBox( finestra ); yesNoBox.prompt( “Do you love Java?”);
Gestire la selezione con ResponseBox int selection = yesNoBox.prompt(“ Premi un  b o tton e &quot;); switch (selection) { case ResponseBox.YES:  messageBox.show(“ Hai premuto  Yes&quot;); break; case ResponseBox.NO: messageBox.show(“ Hai premuto No “); break; }
Esempio di utilizzo di ResponseBox choice = yesNoBox.prompt (“ Vuoi iniziare ad eseguire i calcoli ?&quot;); while (choice == ResponseBox.YES) { // qui vengono eseguiti i calcoli choice = yesNoBox.prompt (“ Altri calcoli?  &quot;); }
Esercitazione – Caratteri e Stringhe ,[object Object],[object Object],[object Object],[object Object]
Unità didattica 4   – Argomenti svolti ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

pcto intelligenza artificiale.pptx
pcto intelligenza artificiale.pptxpcto intelligenza artificiale.pptx
pcto intelligenza artificiale.pptx
matteodiclemente
 
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
venkatapranaykumarGa
 

Tendances (20)

Python tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academyPython tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academy
 
LL(1) parsing
LL(1) parsingLL(1) parsing
LL(1) parsing
 
Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithm
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
pcto intelligenza artificiale.pptx
pcto intelligenza artificiale.pptxpcto intelligenza artificiale.pptx
pcto intelligenza artificiale.pptx
 
Kruskal’s algorithm
Kruskal’s algorithmKruskal’s algorithm
Kruskal’s algorithm
 
Data structure tries
Data structure triesData structure tries
Data structure tries
 
Exception handling in c++
Exception handling in c++Exception handling in c++
Exception handling in c++
 
Shortest path algorithm
Shortest path algorithmShortest path algorithm
Shortest path algorithm
 
Module 11
Module 11Module 11
Module 11
 
Python programming : Arrays
Python programming : ArraysPython programming : Arrays
Python programming : Arrays
 
Foundations Unearthed, Maria Hall, Histories Mysteries
Foundations Unearthed, Maria Hall, Histories Mysteries Foundations Unearthed, Maria Hall, Histories Mysteries
Foundations Unearthed, Maria Hall, Histories Mysteries
 
Linked list
Linked listLinked list
Linked list
 
Finite automata
Finite automataFinite automata
Finite automata
 
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
 
What is Arduino ?
What is Arduino ?What is Arduino ?
What is Arduino ?
 
Corso Fake news: "All'inizio fu la bufala"
Corso Fake news: "All'inizio fu la bufala"Corso Fake news: "All'inizio fu la bufala"
Corso Fake news: "All'inizio fu la bufala"
 
Evaluation of prefix expression with example
Evaluation of prefix expression with exampleEvaluation of prefix expression with example
Evaluation of prefix expression with example
 
Asymptotic Notation
Asymptotic NotationAsymptotic Notation
Asymptotic Notation
 
Python programming msc(cs)
Python programming msc(cs)Python programming msc(cs)
Python programming msc(cs)
 

En vedette (12)

Comunicare senza la parola?
Comunicare senza la parola?Comunicare senza la parola?
Comunicare senza la parola?
 
Film noir pitch
Film noir pitchFilm noir pitch
Film noir pitch
 
pasowanie na czytelnika.ppt
pasowanie na czytelnika.pptpasowanie na czytelnika.ppt
pasowanie na czytelnika.ppt
 
Da Kompetanceprofil 25 01 2011
Da Kompetanceprofil 25 01 2011Da Kompetanceprofil 25 01 2011
Da Kompetanceprofil 25 01 2011
 
Fase3 b agp
Fase3 b agpFase3 b agp
Fase3 b agp
 
1. introduction to bioethics
1.  introduction to bioethics1.  introduction to bioethics
1. introduction to bioethics
 
Venus Chocolates Halloween Día de Muertos 2016
Venus Chocolates Halloween Día de Muertos 2016Venus Chocolates Halloween Día de Muertos 2016
Venus Chocolates Halloween Día de Muertos 2016
 
Nomad - David McGowan
Nomad - David McGowan Nomad - David McGowan
Nomad - David McGowan
 
Dubai
DubaiDubai
Dubai
 
Arth 2751 midterm slide list
Arth 2751 midterm slide listArth 2751 midterm slide list
Arth 2751 midterm slide list
 
Impact smartphone dans consommation touristique mopa jb soubaigne avril 2016
Impact smartphone dans consommation touristique mopa jb soubaigne avril 2016Impact smartphone dans consommation touristique mopa jb soubaigne avril 2016
Impact smartphone dans consommation touristique mopa jb soubaigne avril 2016
 
Human experiment
Human experimentHuman experiment
Human experiment
 

Similaire à Stringhe java

Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
STELITANO
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQL
extrategy
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
STELITANO
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
STELITANO
 
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Cristian Randieri PhD
 
Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)
STELITANO
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
STELITANO
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2
Majong DevJfu
 

Similaire à Stringhe java (20)

Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Array
ArrayArray
Array
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQL
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
 
Scala Programming Linux Day 2009
Scala Programming Linux Day 2009Scala Programming Linux Day 2009
Scala Programming Linux Day 2009
 
Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
Py a5 python-text
Py a5 python-textPy a5 python-text
Py a5 python-text
 
R Graphics
R GraphicsR Graphics
R Graphics
 
R Vectors
R VectorsR Vectors
R Vectors
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2
 
2006 Py02 base
2006 Py02 base2006 Py02 base
2006 Py02 base
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 

Dernier

Dernier (12)

Santa Gemma Galgani, Fiore di Lucca, mistica italiana 1887-1903.pptx
Santa Gemma Galgani, Fiore di Lucca, mistica italiana 1887-1903.pptxSanta Gemma Galgani, Fiore di Lucca, mistica italiana 1887-1903.pptx
Santa Gemma Galgani, Fiore di Lucca, mistica italiana 1887-1903.pptx
 
Lo Schema Diapositiva con LibreOffice Impress
Lo Schema Diapositiva con LibreOffice ImpressLo Schema Diapositiva con LibreOffice Impress
Lo Schema Diapositiva con LibreOffice Impress
 
TeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docxTeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docx
 
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCOa scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
 
AccessibleEU: oggi per l’accessibilità di domani
AccessibleEU: oggi per l’accessibilità di domaniAccessibleEU: oggi per l’accessibilità di domani
AccessibleEU: oggi per l’accessibilità di domani
 
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptxTeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
 
MyEdu Club: il magazine di MyEdu dedicato ai genitori
MyEdu Club: il magazine di MyEdu dedicato ai genitoriMyEdu Club: il magazine di MyEdu dedicato ai genitori
MyEdu Club: il magazine di MyEdu dedicato ai genitori
 
Ticonzero news 149.pdf, maggio 2024, content
Ticonzero news 149.pdf, maggio 2024, contentTiconzero news 149.pdf, maggio 2024, content
Ticonzero news 149.pdf, maggio 2024, content
 
Ostia antica da porta di Roma a porta d'Europa
Ostia antica da porta di Roma a porta d'EuropaOstia antica da porta di Roma a porta d'Europa
Ostia antica da porta di Roma a porta d'Europa
 
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
 
Powerpoint tesi di laurea
Powerpoint tesi di laurea Powerpoint tesi di laurea
Powerpoint tesi di laurea
 
Amburgo la città più smart della Germania
Amburgo la città più smart della GermaniaAmburgo la città più smart della Germania
Amburgo la città più smart della Germania
 

Stringhe java

  • 1. Caratteri e Stringhe Unità didattica 4 Enrico Giunchiglia Gabriele Palma Fondamenti di Informatica
  • 2.
  • 3. Tabella ASCII (standard) Il carattere 'O' ha codice 79 ( riga 70 + col onna 9 = 79 ). O 9 70
  • 4. Gestione di caratteri D ichiarazione ed inizializzazione char ch1; char ch2 = ' X ' ; Conversione tra int e char . uscitaDati.print( “ Codice ASCII di X: &quot; ); uscitaDati.printLine((int) ' X ' ); uscitaDati.print(&quot; Codice ASCII 88: &quot;); uscitaDati.printLine((char) 88 ); true perchè il codice ASCII di 'A' è 65 e il codice di 'c' è 99 . ' A ' < ' c '
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. E sempio : cont eggio di v o cali Queste istruzioni contano il numero di vocali nella stringa in ingresso (nome). String nome = richiestaDati.getString(&quot; Nome ?&quot;); int numeroVocali = 0; for (int i = 0; i < nome.length(); i++) { char letter = nome.charAt(i); if (letter == 'a' || letter == 'A' || letter == 'e' || letter == 'E' || letter == 'i' || letter == 'I' || letter == 'o' || letter == 'O' || letter == 'u' || letter == 'U' ) { numeroVocali++; } } uscitaDati.print( &quot; il tuo nome ha &quot; + numeroVocali + &quot; vocali &quot;);
  • 11. E sempio : co nteggio di parole (1) String frase = richiestaDati.getString(“ Dammi una frase :&quot;); int nc = frase.length(); int indice = 0, numeroParole = 0; while (indice < nc) { // ignor a gli spazi bianchi while (frase.charAt(indice) == ' ') { indice++; } // trova la fine della parola while (frase.charAt(indice) != ' ') { indice++; } // un’altra parola trovata, incremento del contatore numeroParole++; } Problem a : Il ciclo più interno potrebbe assegnare ad indice un valore che eccede il massimo consentito (nc)
  • 12. E sempio : cont eggio di parole (2) String frase = richiestaDati.getString(“ Dammi una frase :&quot;); int nc = frase.length(); int indice = 0, numeroParole = 0; while (indice < nc) { // ignor a gli spazi bianchi while ((indice < nc) && (frase.charAt(indice) == ' ')) { indice++; } // trova la fine della parola while ((indice < nc) && (frase.charAt(indice) != ' ')) { indice++; } // un’altra parola trovata, incremento del contatore numeroParole++; } Problem a : numeroParole è maggiore di uno rispetto al conteggio corretto se la frase finisce con uno o più spazi.
  • 13.
  • 14. E sempio : confronto tra oggetti String int javaNum = 0; boolean ripeti = true; String parola; while ( ripeti ) { parola = inDati.getString(“ Prossima parola :&quot;); if ( parola.equals(&quot;STOP&quot;) ) { ripeti = false; } else if ( parola.equalsIgnoreCase(“Java&quot;) ) { javaNum++; } } Continu a a leggere le parole e conta quante volte la parola Java appare nel testo in ingresso.
  • 15. Uguaglianza (==) vs. equals (1) word1 == word2 word1.equals( word2 ) word1 e word2 p untano allo stesso oggetto. word1 word2 String Java true true
  • 16. Uguaglianza (==) vs. equals (2) word1 word2 word1 == word2 word1.equals( word2 ) word1 e word2 p untano ad oggetti diversi con uguale contenuto. String Java true false String Java
  • 17. Uguaglianza (==) vs. equals (3) word1 word2 word1 == word2 word1.equals( word2 ) word1 e word 2 p untano ad oggetti diversi con diversi contenuti. String Java false false String Bali
  • 18. Altri metodi della classe St ring Me todo Significato substring x.substring(n,m) restituisce una stringa corrispondente alla porzione di x dalla posizione n alla posizione m String s = “Viva Java!”; String t = substring(1,3); // contiene “iva” trim x.trim() restituisce una stringa con lo stesso contenuto di x privato di eventuali spazi all’inizio e alla fine startsWith x.startsWith(y) restituisce true se x comincia con y String s = “Viva Java!”, t = “Viva”; boolean r = s.startsWith(t); endsWith x.endsWith(y) restituisce true se x termina con y String s = “Viva Java!”, t = “Java!”; boolean r = s.endsWith(t); indexOf x.indexOf(c) restituisce la posizione di c in x e x.indexOf(c,n) restituisce la posizione di c in x cominciando la ricerca dalla posizione n; entrambe restituiscono –1 se c non è presente in x (c di tipo char)
  • 19.
  • 20. Metodi di StringBuffer Me todo Significato charAt x.charAt(n) restituisce il carattere in posizione n (analogo alla classe String) length x.length() restituisce il numeo di caratteri in x (analogo alla classe String) setCharAt x.setCharAt(n, c) imposta il carattere in posizione n al valore c (c è di tipo char) deleteCharAt x.deleteCharAt(n) cancella il carattere in posizione n append x.append(y) concatena a x il contenuto di y reverse x.reverse() rovescia il contenuto di x insert x.insert(n,y) inserisce y all’interno di x a partire dalla posizione n delete x.delete(n,m) cancella dalla posizione n alla posizione m toString y = x.toString() restituisce il contenuto di x sotto forma di String (y è un oggetto String)
  • 21. Utilizzo di StringBuffer (1) Rimpiazza tutte le vocali dell’oggetto frase con ' X ' String frase = richiestaDati.getString(“ Frase :&quot;); StringBuffer temp = new StringBuffer(frase); for (int i = 0; i < temp.length(); i++) { char c = temp.charAt(i); if ( c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U' ) { temp.setCharAt(i, 'X'); } } uscitaDati.print(temp);
  • 22. Utilizzo di StringBuffer (2) Costruisce una frase con le sole parole di lunghezza pari String parola; StringBuffer temp = new StringBuffer(&quot;&quot;); boolean ripeti = true; while ( ripeti ) { parola = inDati.getString(“ Prossima parola :&quot;); if ( parola.equals(&quot;STOP&quot;) ) { ripeti = false; } else if ( parola.length() % 2 == 0 ) { temp.append(parola + &quot; &quot;); } } Aggiunge la parola e uno spazio a tempStringBuffer .
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. Gestire la selezione con ResponseBox int selection = yesNoBox.prompt(“ Premi un b o tton e &quot;); switch (selection) { case ResponseBox.YES: messageBox.show(“ Hai premuto Yes&quot;); break; case ResponseBox.NO: messageBox.show(“ Hai premuto No “); break; }
  • 28. Esempio di utilizzo di ResponseBox choice = yesNoBox.prompt (“ Vuoi iniziare ad eseguire i calcoli ?&quot;); while (choice == ResponseBox.YES) { // qui vengono eseguiti i calcoli choice = yesNoBox.prompt (“ Altri calcoli? &quot;); }
  • 29.
  • 30.

Notes de l'éditeur

  1. We have also seen the string concatenation operation. For example, the following code reads in a person’s name and greets the user: //assume inputBox and messageBox are declared //and initialized correctly String name; name = inputBox.getString(&amp;quot;What is your name?&amp;quot;); messageBox.show(&amp;quot;Hello, &amp;quot; + name + &amp;quot;. Nice to meet you.&amp;quot;);
  2. When we write String name; we must say “name is a variable of type String whose value is a reference to an instance of String” to be precise. However, when the value of a variable X is a reference to an instance of class Y, we usually say “X is an instance of Y” or “X is a Y object.” For example, we say canvas is a DrawingBoard object
  3. Remember that a String is an object. If we simply declare, for example, String str3; and forget to create a String object, then str3 is a null object. You will get a NullPointerException if you try to a method of non-existent object, such as str3 in this example.
  4. Using the toUpperCase method, that converts all alphabetic characters to uppercase, we can rewrite the code as char letter; String name = inputBox.getString(&amp;quot;What is your name?&amp;quot;); int numberOfCharacters = name.length(); int vowelCount = 0; String nameUpper = name.toUpperCase(); for (int i = 0; i &lt; numberOfCharacters; i++) { letter = nameUpper.charAt(i); if ( letter == &apos;A&apos; || letter == &apos;E&apos; || letter == &apos;I&apos; || letter == &apos;O&apos; || letter == &apos;U&apos; ) { vowelCount++; } } messageBox.show(name + &amp;quot;, your name has &amp;quot; + vowelCount + &amp;quot; vowels&amp;quot;);
  5. General idea expressed in pseudocode is as follows: read in a sentence; while (there are more characters in the sentence) { look for the beginning of the next word; now look for the end of this word; increment the word counter; }
  6. See Exercise 8.17 on page 408. One approach to solve this “off-by-one” error is to use two counters to keep track of the begin index (the position of the first character) and the ending index (the position of the last character) of the words in a sentence. The second approach is to add an if statement after the outer while to determine whether the last index of the sentence is a blank or not. The third approach is to use the trim method of the String class. The trim method removes the leading and trailing blank spaces (actually all whitespaces and control characters) from a string. Question: Which approach is the best solution? Discuss.
  7. Notice that we wrote word.equals( “STOP”) not word == “STOP” the two boolean expressions have quite different effects. We will describe their difference later.
  8. Here are some examples: String str1 = “Java”, str2 = “ Wow “; str1.compareTo( “Hello” ); //returns positive integer //because str1 &gt;= “Hello” str1.substring( 1, 4 ); //returns “ava” str2.trim( ) //returns “Wow”, str2 stays same str1.startsWith( “Ja” ); //returns true str1.endsWith( “avi” ); //returns false
  9. Notice how the input routine is done. We are reading in a String object and converting it to a StringBuffer object, because we cannot simply assign a String object to a StringBuffer variable. For example, the following code is invalid: StringBuffer strBuffer = inputBox.getString( ); We are required to create a StringBuffer object from a String object as in String str = &amp;quot;Hello&amp;quot;; StringBuffer strBuf = new StringBuffer( str ); You cannot input StringBuffer objects. You have to input String objects and convert them to StringBuffer objects.
  10. Notice that we can write the code using only String objects: boolean repeat = true; String word, newSentence; newSentence = &amp;quot;&amp;quot;; //empty string while ( repeat ) { word = inputBox.getString(&amp;quot;Next word:&amp;quot;); if ( word.equals(&amp;quot;STOP&amp;quot;) ) repeat = false; else if ( word.length() % 2 == 0 ) newSentence = newSentence + word; //string concatenation } Whether we use String or StringBuffer depends on the problem we try to solve.