venerdì 30 maggio 2014

Programmazione: Capitolo 4, Parte 2

Invocare metodi statici
§ Un metodo static non agisce su un oggetto.
NON si può scrivere

double x = 4;
double root = x.sqrt(); // Errore
4.sqrt(); // Errore

§ I metodi statici sono sempre definiti all'interno di classi
§ Per convenzione: i nomi delle classi iniziano con una
lettera maiuscola, quelli di oggetti e metodi con una
lettera minuscola (le invocazioni di metodi sono seguite
da parentesi)
Math
System.out

Sintassi 4.3: Invocazione di un metodo statico
NomeClasse.nomeMetodo(parametri)
Esempio:
Math.sqrt(4)
Obiettivo:
Invocare un metodo statico (un metodo che non agisce
su un oggetto) e fornire i suoi parametri.

. Stringhe
§ Una stringa è una sequenza di caratteri
"Hello, World!"

§ Le stringhe sono esemplari della classe String
§ Per calcolare la lunghezza di una stringa:
int n = message.length();

§ Stringa vuota: “”
Concatenazione negli enunciati print
§ La concatenazione è molto utile per ridurre il numero
degli enunciati System.out.print.
§ Per esempio,
System.out.print("The total is ");
System.out.println(total);

può essere combinato nella singola invocazione:
System.out.println("The total is " + total);
Conversione tra stringhe e numeri
§ Se una stringa contiene le cifre di un numero, viene usato il
metodo Integer.parseInt o Double.parseDouble per
ottenere il valore numerico.
§ Cosa succede se la stringa non contiene un valore
corrispondete al tipo usato?
int parsedInt1 = Integer.parseInt("45.2");
Exception in thread "main" java.lang.NumberFormatException: For input string:
"45.2"
at java.lang.NumberFormatException.
forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at capitolo4.NumericParsingTester.main(NumericParsingTester.java:14)


Eccezioni e studenti
§ Reazione tipica: Non funziona! Il programma è morto! Non
so che fare!
§ Il messaggio d'errore contiene informazioni importanti.
§ L'eccezione
– java.lang.NumberFormatException: For input string: "45.2"
§ File e riga dove viene lanciata l'eccezione
– at capitolo4.NumericParsingTester.
main(NumericParsingTester.java:14)
§ Cercare la prima linea del vostro codice che appare nella
segnalazione di eccezione.
substring
§ Per estrarre una parte di una stringa, viene usato il metodo
substring.
§ La prima posizione della stringa è contrassegnata dall’indice 0,
la seconda da 1 e così via.
§ Le posizioni dei caratteri in una stringa si contano a partire da
zero.

Posizioni di una stringa






substring

§ È possibile calcolare la lunghezza di una sottostringa
mediante l'operazione pastEnd - start
§ per esempio, la stringa “World” ha lunghezza 12 – 7 = 5.

Estrazione di una sottostringa
Leggere dati in ingresso
§ All'oggetto System.in è associato un insieme di funzionalità
minimali: può leggere solo un byte alla volta
§ In Java 5.0, è stata aggiunta una classe Scanner che consente la
lettura semplice e comoda dei dati inseriti in ingresso da tastiera.
§ Quando viene invocato il metodo nextInt o nextDouble, il
programma si arresta in attesa che l’utente digiti un numero e prema
il tasto “Enter” (“Invio”):
§ Il metodo nextLine restituisce la successiva riga di testo fornita in
ingresso (fino alla pressione del tasto “Enter”), sotto forma di oggetto
di tipo String.
§ Il metodo next restituisce, invece, la parola successiva, una
sequenza di caratteri terminata da un carattere di spaziatura (“white
space”)
Leggere dati in ingresso
§ Gli oggetti di tipo Scanner hanno metodi per
verificare il tipo del dato che sta per essere letto
– public boolean hasNextInt()
– public boolean hasNextLong()
– public boolean hasNextLine()
– ....
File CashRegisterSimulator.java
01: import java.util.Scanner;
02:
03: /**
04: Programma che simula una transazione in cui un utente paga
05: per un articolo e riceve il resto
06: */
07: public class CashRegisterSimulator
08: {                    
09: public static void main(String[] args)
10: {
11: Scanner in = new Scanner(System.in);
12:
13: CashRegister register = new CashRegister();
14:
15: System.out.print("Enter price: ");
16: double price = in.nextDouble();
17: register.recordPurchase(price);
18:
19: System.out.print("Enter dollars: ");
20: int dollars = in.nextInt();
21: int dollars = in.nextInt();
22: System.out.print(“Enter quarters: “);
23: int quarters = in.nextInt();
24: System.out.print(“Enter dimes: “);
25: int dimes = in.nextInt();
26: System.out.print(“Enter nickels: “);
27: int nickels = in.nextInt();
28: System.out.print(“Enter pennies: “);
29: int pennies = in.nextInt();
30: register.enterPayment(dollars, quarters, dimes, nickels,
pennies);
31:
32: System.out.print(“Your change: “);
33: System.out.println(register.giveChange());
34: }
35: }
Visualizza
Enter price: 7.55
Enter dollars: 10
Enter quarters: 2
Enter dimes: 1
Enter nickels: 0
Enter pennies: 0
Your change is 3.05


Nessun commento:

Posta un commento