Per questa esercitazione è necessario utilizzare il package lab2.
|
Risolvere i problemi elencati sotto NELL'ORDINE IN CUI SONO ELENCATI. Non si richiede di scrivere TUTTI i programmi, ma quelli risolti devono compilare correttamente e produrre i risultati richiesti. Alla fine dell'esercitazione, copiare tutti i file prodotti in una cartella identificata dai cognomi dei componenti del gruppo, sotto serverPu/Esercizi/Lez24004. Siete invitati a completare (alcuni de)gli esercizi
fuori dall'orario di esercitazione, soprattutto se avete trovato serie
difficoltà a svolgerli. Potete mandare l'eventuale completamento
all'indirizzo guerrini@disi.unige.it.
|
Esercizio 1
Si
scriva la classe
MultipliList
contentente il metodo statico multipli:
import lab2.*;
public class MultipliList {
|
Si assume che tutti gli elementi della lista lst
siano di tipo Integer: se cio' non e' vero, il metodo deve
lanciare un'eccezione ClassCastException. Il metodo multipli
restituisce una lista contenente tutti gli oggetti di lst
che sono multipli di
n. Il metodo non deve modificare la
lista lst. Il metodo deve lanciare un'eccezione IllegalArgumentException
se l'intero passato per parametro e' 0.
Per testare la classe MultipliList, si
compili ed esegua la classe TestMultipliList.
L'output deve essere ESATTAMENTE il seguente:
Provo il metodo MultipliList.multipli(List,int)...
Multipli di 5 in [ 7 11 45 -5 0 9 10 6 1 2]: [ 45 -5 0 10] Lista dopo multipli: [ 7 11 45 -5 0 9 10 6 1 2] Multipli di 10 in [ 11 -5 9 11 6]: [] Lista dopo multipli: [ 11 -5 9 11 6] Multipli di 3 in []: [] Lista dopo multipli: [] invoco multipli(2,[ 3 56 89 bingo!]) Ok: multipli ha lanciato l'eccezione java.lang.ClassCastException E se invoco multipli(0,...) ? Bene: mi aspettavo proprio una java.lang.IllegalArgumentException |
Esercizio 2
Si scriva la classe TogliMultipli
contentente il metodo statico togliMultipli:
import lab2.*;
public class TogliMultipli {
|
Si assume che tutti gli elementi della list lst
siano di tipo Integer: se cio' non e' vero, il metodo deve
lanciare un'eccezione IllegalArgumentException. Il metodo
togliMultipli
deve togliere dalla lista lst tutti gli oggetti il cui
valore e' n oppure un multiplo di n. In
particolare se n = 0, dalla lista vengono tolti tutti gli
0. Il metodo restituisce la somma dei numeri contenuti nella lista dopo
la rimozione degli elementi.
Per testare la classe TogliMultipli,
si compili ed esegua la classe TestTogliMultipli.
L'output deve essere ESATTAMENTE il seguente:
Provo il metodo TogliMultipli.togliMultipli(int,List)...
Tolgo multipli di 5 da [ 7 11 45 -5 0 9 10 6 1 2] Risultato: [ 7 11 9 6 1 2] Somma elementi: 36 Tolgo multipli di 10 da [ 11 -5 9 11 6] Risultato: [ 11 -5 9 11 6] Somma elementi: 32 Tolgo multipli di 3 dalla lista vuota Risultato: [] Somma elementi: 0 Tolgo multipli di 0 da: [ 7 0 2 3 0 -4 0] Risultato: [ 7 2 3 -4] Somma elementi: 8 invoco togliMultipli(2,[ 3 56 89 bingo!]) Ok: togliMultipli ha lanciato una IllegalArgumentException |
Esercizio 3
Esercizio 4
Esercizio 5
Data una lista L contenente istanze
dell'interfaccia Comparable,
scrivere un metodo per costruire una nuova lista
che contenga tutti i massimi locali di L, dove un massimo locale è un elemento x di L tale che il suo predecessore
e il suo successore sono entrambi minori di x.
Testare il metodo con un semplice programma di verifica.
Soluzioni: LocalMaxList.java
Esercizio 6
Sia dato il seguente frammento di
programma
import lab2.*;
public class OrdinaListInv {
public static List ordina ( List lst ) {
|
Si completi la classe OrdinaListInv,
in maniera che il metodo ordina
restituisca una lista contenente tutti gli elementi di lst
(che si assume siano istanze dell'interfaccia Comparable)
in ordine decrescente e senza ripetizioni.
Soluzioni: OrdinaListInv.java