Visualizzazione dei risultati da 1 a 6 su 6

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto potresti sfruttare il null (che è pure il valore di default degli elementi nell'array String[]) per indicare che è "vuoto".

    Sulle eccezioni, a dire il vero, dovresti considerarle fin da subito. Per evitare di scrivere codice lungo e contorto, dovresti separare le cose in più metodi. Visto che di Scanner agganciato a System.in ne devi avere solo UNO, dovresti tenerlo da qualche parte in modo che sia riutilizzabile. NON pensare ad un campo "static". Sarebbe meglio sfruttare una istanza di PianificareAppuntamenti, mantenendo Scanner, l'array ed eventualmente altro come "stato" dell'oggetto.
    Quindi dovresti cambiare radicalmente approccio e per ottime ragioni.
    ok, ci provo...

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Riguardo il come associare le ore agli indici, ci sono varie soluzioni, anche più "object oriented" di quello che hai fatto finora. Come ad esempio definire una classe Appuntamento che modella solo l'appuntamento (niente input qui dentro!) con l'ora e la descrizione. L'ora chiaramente sarebbe già presente fin dall'inizio negli oggetti. E poi chiaramente avere un array Appuntamento[] .
    Ok, sto creando la classe Appuntamento in questo modo:

    codice:
    package eccezioni;
    
    
    public class Appuntamento {
    	private int ora;
    	private String descrizione;
    	private String agendaoraria[] = new String[6];
    	
    	public Appuntamento(){
    	ora=0;
    	descrizione=null;
    	}
    	
    	public void resetAgenda(){
    		for(int i=0;i<agendaoraria.length;i++){
    			agendaoraria[i]=null;
    		}
    	}
    	
    	public int setAppuntamento(int orario, String commento){
    
    
    		
    	}
    }
    ma come associo l'int orario che ricevo in setAppuntamento e l'indice dell'array per controllare che lo slot sia pieno o meno?

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Questo per via del solito "annoso" mix di nextLine con gli altri nextXXX (es. nextInt). Se ad un nextInt l'utente digita 123<invio>, il nextInt restituisce 123 ma il newline resta ancora in Scanner e sarà usato come delimitatore per la prossima lettura. NON viene buttato via subito.
    Ma se appena dopo fai un nextLine(), esso "vede" una riga vuota e questo è il motivo di quel comportamento. Che NON è un "baco" di Scanner, funziona così e basta.
    Capito, ma come posso ovviare al problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Ok, sto creando la classe Appuntamento in questo modo:
    No, io dicevo: classe Appuntamento con solo una ora e una descrizione, solo 2 campi.

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Capito, ma come posso ovviare al problema?
    O eviti il mix (fai sempre nextLine e converti ciò che serve non String) oppure presti attenzione e butti via una riga dopo un nextInt (bruttino).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Classe Appuntamento con solo ora e descrizione
    Classe PianificareAppuntamenti con metodi get & set
    Classe AppuntamentiDemo con main

    Così va bene?
    Resta il problema dell'associare l'orario con l'indice dell'array... lo switch può andare? Non ho idea altrimenti...
    E poi che condizione metto per ricreare un ciclo qualora l'array è pieno e parte l'eccezione?
    Ultima modifica di Sevenis; 04-01-2017 a 17:34

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Classe Appuntamento con solo ora e descrizione
    Ok

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Classe PianificareAppuntamenti con metodi get & set
    Alt, se intendi una classe che HA l'array Appuntamento[] di 6 elementi e offre i metodi per operare su di esso, es. ricerca di un appuntamento, ecc... allora sì.
    Se no, chiarisci perché altrimenti può non avere senso e/o utilità.

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Classe AppuntamentiDemo con main
    Ok

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Resta il problema dell'associare l'orario con l'indice dell'array... lo switch può andare? Non ho idea altrimenti...
    Basta creare l'array Appuntamento[] di 6 elementi e poi creare espressamente 6 oggetti Appuntamento (che assegnerai agli elementi dell'array, ovviamente), ciascuno con la sua ora ma inizialmente senza descrizione.
    A quel punto diventa banale: a) verificare se un orario richiesto dall'utente "esiste" tra questi appuntamenti e b) verificare se ha descrizione o no (null).
    Nessun (maxi) switch, nessuna logica strana ... al massimo una banale ricerca lineare con un for (in PianificareAppuntamenti se la fai come ho detto prima).

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    E poi che condizione metto per ricreare un ciclo qualora l'array è pieno e parte l'eccezione?
    Questo è da vedere, nel senso che dipende da come strutturi la logica di input in AppuntamentiDemo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.