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