Inizializzare un array con i nomi dei giorni della settimana (String[] giorni = {"lunedì", …};) e leggere in un secondo array la temperatura di ciascun giorno. Visualizzare il giorno più caldo e quello più freddo.

[SOL] Java - Esercizio nr. 60


Programma per il Monitoraggio delle Temperature Settimanali

Questo programma Java serve per registrare le temperature di una settimana e trovare il giorno più caldo e quello più freddo.

Struttura del Programma

Importazione e Dichiarazioni Iniziali

import java.util.Scanner;
public class Temperature {

Il programma inizia importando la classe Scanner che ci permette di leggere input da tastiera, e definisce una classe chiamata Temperature.

Preparazione dei Dati

String[] giorni = {"lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica"};
double[] temperature = new double[giorni.length];

Vengono creati due array:

  • giorni: contiene i nomi dei giorni della settimana come stringhe
  • temperature: un array di numeri decimali (double) per memorizzare le temperature, con la stessa lunghezza dell'array dei giorni (7 elementi)

Raccolta delle Temperature

for (int i = 0; i < giorni.length; i++) {
    System.out.print("Temperatura di " + giorni[i] + ": ");
    temperature[i] = in.nextDouble();
}

Questo ciclo for esegue le seguenti operazioni:

  • Scorre tutti i giorni della settimana (da 0 a 6)
  • Per ogni giorno, chiede all'utente di inserire la temperatura
  • Salva la temperatura inserita nell'array temperature alla posizione corrispondente

Ricerca del Giorno più Caldo e più Freddo

int max = 0;
int min = 0;
for (int i = 1; i < temperature.length; i++) {
    if (temperature[i] > temperature[max]) {
        max = i;
    }
    if (temperature[i] < temperature[min]) {
        min = i;
    }
}

Questa parte del codice:

  • Inizializza le variabili max e min a 0 (assumendo che il primo giorno sia sia il più caldo che il più freddo)
  • Scorre l'array delle temperature partendo dal secondo elemento (indice 1)
  • Confronta ogni temperatura con quella attualmente considerata massima e minima
  • Aggiorna gli indici max e min quando trova temperature più alte o più basse

Visualizzazione dei Risultati

System.out.println("Giorno più caldo: " + giorni[max] + " (" + temperature[max] + "°)");
System.out.println("Giorno più freddo: " + giorni[min] + " (" + temperature[min] + "°)");

Infine, il programma stampa:

  • Il nome del giorno più caldo e la sua temperatura
  • Il nome del giorno più freddo e la sua temperatura

Esempio di Esecuzione

Se l'utente inserisce le temperature:

  • Lunedì: 15.5°
  • Martedì: 18.2°
  • Mercoledì: 12.1°
  • Giovedì: 20.3°
  • Venerdì: 17.8°
  • Sabato: 22.1°
  • Domenica: 19.4°

Il programma mostrerà:

Giorno più caldo: sabato (22.1°)
Giorno più freddo: mercoledì (12.1°)

Concetti Chiave

  • Array paralleli: giorni e temperature sono collegati tramite gli indici
  • Ricerca lineare: il programma esamina tutti gli elementi per trovare massimo e minimo
  • Gestione degli indici: si utilizzano gli indici per collegare giorni e temperature corrispondenti

import java.util.Scanner;

public class Temperature {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        String[] giorni = {"lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica"};
        double[] temperature = new double[giorni.length];

        for (int i = 0; i < giorni.length; i++) {
            System.out.print("Temperatura di " + giorni[i] + ": ");
            temperature[i] = in.nextDouble();
        }

        int max = 0;
        int min = 0;
        for (int i = 1; i < temperature.length; i++) {
            if (temperature[i] > temperature[max]) {
                max = i;
            }
            if (temperature[i] < temperature[min]) {
                min = i;
            }
        }

        System.out.println("Giorno più caldo: " + giorni[max] + " (" + temperature[max] + "°)");
        System.out.println("Giorno più freddo: " + giorni[min] + " (" + temperature[min] + "°)");

        in.close();
    }
}