Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 25
  1. #11
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    io ho fatto così dimmi cosa c'è di sbagliato
    codice:
    percorsoprecedente;C:\Users\pippo\Downloads\jep parser\jep-2.4.1-ext-1.1.1-gpl\dist\ext-1.1.1.jar
    cosa c'è che non va?
    Tecnicamente mi pare corretto. Hai quindi impostato la variabile di ambiente CLASSPATH? E compili da linea di comando con i tools del JDK? Perché sarebbe un conto. Se usi un IDE ... non è detto che serva o sia sufficiente.

    Originariamente inviato da zipangulu
    mi spieghi in più cosa fa questa istruzione?
    Mi pare(va) intuitivo ... aggiunge al parser una variabile associandoci un valore.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #12
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    sisi compilo da linea di comando con i tools del jdk ma non va,dice che il package org.nfunk.jep
    non esiste!
    Ho provato a compilare sia tramite textpad sia tramite prompt ma il risultato non cambia!

  3. #13
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    ho risolto!grazie
    dovevo mettere entrambi i jar della directory

  4. #14
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    dovevo mettere entrambi i jar della directory
    Guarda che per il mio esempio basta solo il jep-X.X.X.jar ..... e l'avevo anche detto!!!
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #15
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    altra domanda:da quello che ho capito l'argomento del sin(come delle altre funzioni trigonometriche) va inserito in radianti?vero?
    ma se l'utente inserisce gli angoli in gradi sessagesimali cm la gestisco la situazione?mica posso fare ogni volta un check per trasformare ì gradi in radianti

  6. #16
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    va inserito in radianti?vero?
    Sì, è quello che ho subito intuito io. Generalmente le funzioni/metodi tipo sin, cos, che sono presenti nei vari linguaggi di programmazione (es. la sin() del PHP, la sin() di java.lang.Math, ecc...) è praticamente quasi certo che ricevono l'argomento in radianti. Salvo casi particolari, ovviamente, che dovrebbero essere documentati.

    Originariamente inviato da zipangulu
    ma se l'utente inserisce gli angoli in gradi sessagesimali cm la gestisco la situazione?
    Con una conversione.

    Io nel mio esempio l'ho fatta nella espressione passata a JEP. Ma se vuoi c'è anche double toRadians(double angdeg) di java.lang.Math
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #17
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    si le conosco le modalità di conversioni tramite math eccetera ma il problema è che l'utente ha la libertà di inserire quello che vuole quindi lui può ad esempio inserire:
    25*sin(90)+tan(45)
    gli angoli sono tutti sessagesimali!
    ma io in un'espressione come questa come faccio a mettere mano per modificare l'argomento delle operazioni trigonometriche?dovrei fare un qualcosa del tipo:
    codice:
    double angoloInRadianti=Math.toRadians(angoloInSessagesimali);
    e passare come argomento delle funzioni trigonometriche l'angolo convertito
    ma in una stringa liberamente inserita dall'utente come faccio a fare ciò?Esiste una soluzione che non vincoli l'utente a inserire forzatamente gli angoli in radianti?

  8. #18
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    l'utente ha la libertà di inserire quello che vuole quindi lui può ad esempio inserire:
    25*sin(90)+tan(45)
    gli angoli sono tutti sessagesimali!

    Esiste una soluzione che non vincoli l'utente a inserire forzatamente gli angoli in radianti?
    Sì, ho capito benissimo cosa intendi dire. Ma visto che la espressione la dovresti passare pari pari (quindi tu non dovresti toccarla/analizzarla ... altrimenti che senso avrebbe?) al parser di JEP (parlo di JEP perché abbiamo parlato di questo finora), allora è tutta una questione del parser e di cosa può offrire in termini di "personalizzazione".
    E si potrebbe fare almeno su 2 livelli:

    a) Vedere se JEP può essere configurato in modo "globale" (o anche per singola istanza della classe JEP) per indicare es. "guarda JEP che tutti gli argomenti di sin/cos sono in gradi".

    b) Vedere se in JEP si possono aggiungere "funzioni" definite dal programmatore (un po' come si fa con addVariabile .... es. se c'è un addFunction o simile) in modo da non usare le "sue" sin/cos predefinite ma usare delle tue funzioni che calcolano seno/coseno "sapendo" che l'argomento è in gradi.

    E per verificare se/quale delle due è possibile, basta solo guardare un po' più a fondo la documentazione javadoc.
    Io l'ho guardata di sfuggita giusto solo per riuscire a fare quell'esempio. Appena ho un attimo guardo meglio ....
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #19
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    hai capito benissimo quello che volevo dire...ci proverò
    comunque grazie mille per tutto quello che stai facendo!

  10. #20
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Esempio di uso di JEP con la definizione di una nuova funzione "seno" che accetta l'angolo in gradi.

    codice:
    import java.util.Stack;
    import org.nfunk.jep.*;
    import org.nfunk.jep.function.PostfixMathCommand;
    
    public class ProvaFunzioneJEP {
        public static void main(String[] args) {
            JEP jep = new JEP();
            jep.addFunction("seno", new Seno());
    
            jep.parseExpression("20 * seno(90)");   // 90 gradi!
    
            if (jep.hasError()) {
                System.out.println("ERRORE: " + jep.getErrorInfo());
            } else {
                double risultato = jep.getValue();
    
                System.out.println("Risultato: " + risultato);
            }
        }
    }
    
    class Seno extends PostfixMathCommand {
        public Seno() {
            numberOfParameters = 1;
        }
    
        public void run(Stack inStack) throws ParseException {
            checkStack(inStack);
            Object param = inStack.pop();
            inStack.push(sin(param));
        }
    
        private Object sin(Object param) throws ParseException {
            if (param instanceof Number) {
                double gradi = ((Number) param).doubleValue();
                double radianti = Math.toRadians(gradi);
    
                return new Double(Math.sin(radianti));
            }
    
            throw new ParseException("Invalid parameter type");
        }
    }
    Per il codice della classe Seno che ho scritto, ho largamente preso spunto dal sorgente della classe org.nfunk.jep.function.Sine, che è quasi uguale, salvo il fatto che io ho tolto la gestione dei numeri "complessi".
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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.