Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    aiuto programma agenda per gestione apputamenti problema mio bug

    ciao! ho bisogno di un aiuto per una applicazione in java fatta con ambiente ide netbeans versione 6.9.1,

    per crearla ho usato 4 classi:

    codice:
    package agenda;
    
    import java.util.GregorianCalendar;
    
    
    
    public class appuntamento extends Object {
    
    
    
        private String orario, cosadafare, luogo;
    
        private int giornosettimana, gg, mese, anno;
    
    
    
        public appuntamento(String luogo, int giornosettimana, int gg, int mese, int anno, String orario, String cosadafare) {
    
            this.luogo = luogo;
    
            this.giornosettimana = giornosettimana;
    
            this.gg = gg;
    
            this.mese = mese;
    
            this.anno = anno;
    
            controllaData();
    
            this.orario = orario;
    
            this.cosadafare = cosadafare;
    
        }
    
    
    
        public String getCosadafare() {
    
            return cosadafare;
    
        }
    
    
    
        public String getLuogo() {
    
            return luogo;
    
        }
    
    
    
        public String getOrario() {
    
            return orario;
    
        }
    
    
    
        public int getGg() {
    
            return gg;
    
        }
    
    
    
        public int getMese() {
    
            return mese;
    
        }
    
    
    
        public int getAnno() {
    
            return anno;
    
        }
    
    
    
        public int getGiornosettimana() {
    
            return giornosettimana;
    
        }
    
    
    
        public void getData(int gg, int mese, int anno) {
    
            GregorianCalendar gc = new GregorianCalendar(gg, mese - 1, anno);
    
            controllaData();
    
        }
    
    
    
        public String setGiornosettimana() {
    
             String s = "";
    
            if (giornosettimana <= 0 && giornosettimana > 7) {
    
                System.err.println("non puoi inserire giorni della settimana minori dello 0 o maggiori del 7");
    
            } else {
    
                switch (giornosettimana) {
    
                    case 1:
    
                        s = "lunedì";
    
                        break;
    
                    case 2:
    
                        s = "martedì";
    
                        break;
    
                    case 3:
    
                        s = "mercoledì";
    
                        break;
    
                    case 4:
    
                        s = "giovedì";
    
                        break;
    
                    case 5:
    
                        s = "vernerdì";
    
                        break;
    
                    case 6:
    
                        s = "sabato";
    
                        break;
    
                    case 7:
    
                        s = "sabato";
    
                        break;
    
                }
    
            }
    
             return s;
    
        }
    
    
    
        public String setMese() {
    
            String s = "";
    
            if (mese <= 0 && mese > 12) {
    
                System.err.println("non puoi inserire il mese 0 e mesi oltre al 12");
    
            } else {
    
                switch (mese) {
    
                    case 1:
    
                        s = "gennaio";
    
                        break;
    
                    case 2:
    
                        s = "febbraio";
    
                        break;
    
    
    
                    case 3:
    
                        s = "marzo";
    
                        break;
    
    
    
                    case 4:
    
                        s = "aprile";
    
    
    
                        break;
    
                    case 5:
    
                        s = "maggio";
    
    
    
                        break;
    
                    case 6:
    
                        s = "giugno";
    
    
    
                        break;
    
                    case 7:
    
                        s = "luglio";
    
    
    
                        break;
    
                    case 8:
    
                        s = "agosto";
    
                        break;
    
    
    
                    case 9:
    
                        s = "settembre";
    
                        break;
    
    
    
                    case 10:
    
                        s = "ottobre";
    
    
    
                        break;
    
                    case 11:
    
                        s = "novembre";
    
    
    
                        break;
    
                    case 12:
    
                        s = "dicembre";
    
    
    
                        break;
    
                }
    
            }
    
            return s;
    
        }
    
    
    
        public void controllaData() {
    
            if (mese <= 0 && mese > 12) {
    
                System.err.println("non puoi inserire il mese 0 e mesi oltre al 12");
    
                return;
    
            } else {
    
                switch (mese) {
    
                    case 1:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 2:
    
                        if (gg > 29) {
    
                            System.err.println("non puoi inserire un numero oltre al 29");
    
                            return;
    
                        }
    
                        break;
    
                    case 3:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 4:
    
                        if (gg > 30) {
    
                            System.err.println("non puoi inserire un numero oltre al 30");
    
                            return;
    
                        }
    
                        break;
    
                    case 5:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 6:
    
                        if (gg > 30) {
    
                            System.err.println("non puoi inserire un numero oltre al 30");
    
                            return;
    
                        }
    
                        break;
    
                    case 7:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 8:
    
                        if (gg > 31) {
    
                            System.out.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 9:
    
                        if (gg > 30) {
    
                            System.err.println("non puoi inserire un numero oltre al 30");
    
                            return;
    
                        }
    
                        break;
    
                    case 10:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                    case 11:
    
                        if (gg > 30) {
    
                            System.err.println("non puoi inserire un numero oltre al 30");
    
                            return;
    
                        }
    
                        break;
    
                    case 12:
    
                        if (gg > 31) {
    
                            System.err.println("non puoi inserire un numero oltre al 31");
    
                            return;
    
                        }
    
                        break;
    
                }
    
            }
    
        }
    
    
    
        @Override
    
        public String toString() {
    
            return getLuogo() + "," + "\t" + setGiornosettimana() + "\t" + getGg() + "\t" + setMese() + "\t" + getAnno() + "\t" + getOrario() + "'" + getCosadafare() + "'" + "\n";
    
        }
    
    }
    2) classe agendina:

    codice:
    package agenda;
    
    
    
    public class angendina {
    
    
    
        private static final int MAXAPPUNTAMENTI = 20;
    
        private int nAppuntamenti;
    
        private appuntamento[] a;
    
    
    
        public angendina() {
    
            a = new appuntamento[MAXAPPUNTAMENTI];
    
            nAppuntamenti = 0;
    
        }
    
    
    
        public int getAppuntamenti() {
    
            return nAppuntamenti;
    
        }
    
    
    
        public appuntamento getAppuntamenti(int i) {
    
            return a[i];
    
        }
    
    
    
        public void aggiungiAppuntamento(String luogo, int giornosettimana, int gg, int mese, int anno, String orario, String cosadafare) {
    
            if (nAppuntamenti < MAXAPPUNTAMENTI - 1) {
    
                this.a[nAppuntamenti] = new appuntamento(luogo, giornosettimana, gg, mese, anno, orario, cosadafare);
    
                nAppuntamenti++;
    
            } else {
    
                System.err.println("raggiunto max apputamenti");
    
            }
    
        }
    
    
    
        public void riduciAppuntamento() {
    
            for (int i = 0; i < nAppuntamenti; i++) {
    
                if (a[i].getCosadafare().equals(a)) {
    
                    for (int j = 0; j < nAppuntamenti; j++) {
    
                        a[j] = a[j + 1];
    
                    }
    
                }
    
                nAppuntamenti--;
    
    
    
            }
    
            System.err.println("rag minimo apputamenti");
    
        }
    
    
    
        public String getParola() {
    
            if (getAppuntamenti() <= 0) {
    
                return "";
    
            } else {
    
                if (getAppuntamenti() == 1) {
    
                    return "apputamento:";
    
                } else {
    
                    return "apputamenti:";
    
                }
    
            }
    
        }
    
    
    
        @Override
    
        public String toString() {
    
            String s = "ho:" + "\t" + getAppuntamenti() + "\t" + getParola() + "\n";
    
            for (int i = 0; i < nAppuntamenti; i++) {
    
                s += a[i].toString();
    
            }
    
            return s;
    
        }
    
    }
    questa classe qui sotto in particolare è una classe che il professore ha detto di chiamare cosi perchè deve fungere da interfaccia tra o il main o la wiew per l'immisione degli input e per crearea parte le operazioni di output che non possono essere assolutamente messe già dentre le classi normali.

    in modo tale che nella classe main o principale ho pocchissime istruzioni.



    3 )classe interfaccia:

    codice:
    package agenda;
    
    
    
    import java.io.PrintStream;
    
    import java.util.InputMismatchException;
    
    import java.util.Scanner;
    
    
    
    public class interfaccia {
    
    
    
        private String  luogo,orario, cosadafare;
    
        private int giornosettimana,gg, mese, anno;
    
        private angendina a = new angendina();
    
        private PrintStream output = new PrintStream(System.out);
    
        private Scanner input = new Scanner(System.in);
    
    
    
        public void Esegui() {
    
            output.println("luogo:");
    
            luogo = input.nextLine();
    
            try {
    
                output.println("giorno settimana:");
    
                giornosettimana = input.nextInt();
    
                output.println("gg:");
    
                gg = input.nextInt();
    
                output.println("mese:");
    
                mese = input.nextInt();
    
                output.println("anno:");
    
                anno = input.nextInt();
    
            } catch (InputMismatchException e) {
    
                System.err.println("inserisci solo numeri");
    
                return;
    
            }
    
            output.println("orario:");
    
            orario = input.nextLine();
    
            output.println("cosa hai da fare?");
    
            cosadafare = input.nextLine();
    
            a.aggiungiAppuntamento(luogo, giornosettimana, gg, mese, anno, orario, cosadafare);
    
            System.out.println(a.toString() + "CopyRight By Grisu");
    
        }
    
    }
    4) classe main(o classe principale):

    codice:
    package agenda;    
    public class Main {        
    private static interfaccia i = new interfaccia();        
    public static void main(String[] args) {          
    i.Esegui();     
     } 
     }

    solo che ho un piccolo problema che mi causa un bug durante l'esecuzione del programma, in pratica esce fuori la richiesta

    di input dell'orario ma non la posso usare perchè neanche il tempo di inserire l'orario mi chiede la cosa da fare come se saltasse

    il passaggio dell'orario. infatti escendo questo fatto, nel risultato finale mi appare uno spazio vuoto bianco come mancanse proprio l'input dell'orario. come mai? come risolvo? non mi trovo bene conil debbuger forse sbaglio qualcosa nel controllare il codice

    ma non trovo l'errore.infatti se mi indicaste tra le altre cose anche una guida per fare un debug serio sarebbe meglio anche per il futuro.


    il programma è per creare un'agenda per la gestione di apputtamenti

  2. #2
    Il problema lo causa nextInt();
    Per una spiegazione più ampia leggi qui:
    http://forum.html.it/forum/showthrea...readid=1440116

  3. #3
    ma quale nextInt() disturba il programma e poi non ho ancora ben capito l'errore. e come risoverlo?.

  4. #4
    Originariamente inviato da Cracker1992
    ma quale nextInt() disturba il programma e poi non ho ancora ben capito l'errore. e come risoverlo?.
    codice:
    anno = input.nextInt();
    ti conviene usare solo nextLine()/next() per ogni valore da prendere da console, e all'occorrenza fare il cast.

  5. #5
    ho risolto 1 bug su 2 perchè l'roraio cosi facendo me lo chiede ma non mi esce fuori alla fine il risultato finale ma neanche la cosa da fare cosa che prima di risolvere questo bug me lo scriveva.ma facendo cosi
    se metto tale codice:
    codice:
    input.next();
    dopo ogni inserimento da tastiera.
    ogni volta mi chiede 2 input per ogni input da inserire.
    oppure applico il codice per solo gli input orario e cosa da fare il secondo input non me lo chiede ma non mi fa neanche visualizzare il risultato finale.
    come mai? come risolvo? comunque grazie per il metodo che trovo un po' grezzo premettendo che io non conosco altri per lo meno mi fa chiedere tutti gli input da tastiera che voglio e che mi servono.

  6. #6
    Originariamente inviato da Cracker1992
    oppure applico il codice per solo gli input orario e cosa da fare il secondo input non me lo chiede ma non mi fa neanche visualizzare il risultato finale.
    come mai? come risolvo?
    Il motivo di questo problema è spiegato nel dettaglio nel link che ti ho dato.

    Per risolvere il problema, come già ti ho detto, usa solo nextline(); se invece vuoi per forza fare uso di nextInt()/next() ma immediatamente dopo vai a chiamare nextline() allora otterrai il problema che hai descritto;
    quindi nel caso in cui hai
    codice:
    ...
    anno = input.nextInt();
    output.println("orario:");
    orario = input.nextLine();
    ...
    ti conviene scrivere
    codice:
    ...
    anno = input.nextInt();
    input.nextLine();
    output.println("orario:");
    orario = input.nextLine();
    ...

  7. #7
    grazie mille finalmente ho il programma funzionante.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.