Ciao, avrei da svolgere questo esercizio:
Scrivere un programma che permetta agli studenti di pianificare appuntamenti per le ore 13,14,15,16,17 o 18. Si utilizzi un array di sei stringhe per memorizzare le descrizioni degli appuntamenti associati ai sei orari. Scrivere un ciclo che si ripete finché l'array ha ancora spazio libero. In un blocco try, chiedere all'utente di inserire un'ora e una descrizione. Se l'ora specificata è libera, inserire la descrizione nell'array. In caso contrario, lanciare un'eccezione OraOccupataException. Se, invece, l'ora specificata non è nell'intervallo 13-18, lanciare un'eccezione OraNonContemplataException.
Usare un blocco catch per ogni tipo di eccezione.
Allora, prima di passare a settare il codice con le eccezioni, sto creando quello base ipotizzando nessun errore.
In primis volevo sapere se la logica che ho adottato è giusta o se ci sarebbe qualche algoritmo più performante per indicizzare l'array, per il check "disponibilità ora" e al posto dello switch. Non so poi come settare il ciclo facendomi restituire una condizione d'uscita valida. Scrivere nel System.out.println("Digitare 0 per le ore 13, 1 per le ore 14, etc etc" per poter così lavorare con i giusti indici è da evitare?
Altra cosa, non so come mai ma nello switch se metto "descrizione.next()" mi legge la parola che digito mentre se metto "descrizione.nextLine()" il programma si chiude senza darmi possibilità di inserire input.
Grazie
codice:
package eccezioni;
import java.util.Scanner;
public class PianificareAppuntamenti {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] fasciaoraria = new String[6];
String descrizione="";
Scanner tastiera = new Scanner(System.in);
//inizializzo l'array
for(int i=0;i<fasciaoraria.length;i++){
fasciaoraria[i]="vuota";
}
while(true){
System.out.println("A che ora vorresti fissare l'appuntamento? Ore 13, 14, 15, 16, 17 o 18?");
int orario = tastiera.nextInt();
switch(orario){
case 13:
if(fasciaoraria[0].equals("vuota")){
System.out.println("Orario disponibile! Aggiungere descrizione: ");
descrizione = tastiera.nextLine();
fasciaoraria[0]=descrizione;
break;
}
else{
System.out.println("Ora occupata! Sceglierne un'altra");
}
}
}
}
}