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