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

    java moltiplicazione con variabile vuota

    Buongiorno e complimenti per il forum.
    ho un problema con del codice Java che sto inserendo in un PDF per farmi delle operazioni in automatico.

    in pratica leggo un numero da un campo e lo assegno alla variabile 1 leggo poi un altro numero da un altra casella di testo e lo assegno alla variabile 2.

    Adesso, se la variabile 2 � inferiore a 200 e la variabile 1 � >=0 devo moltiplicare v1*v2 e sin qui tutto semplice.
    il problema arriva se V1 � vuoto , e cio� non digito nessun numero, in questo caso infatti non devo ottenere nessun risultato e la casella deve rimanere vuota, mentre adesso ottengo comunque 0,00 e non capisco il perch�.

    vi inserisco il codice che ho scritto e vi ringrazio anticipatamente per il vostro aiuto.

    // Get first field valuevar v1 = getField("Testo2").value;
    // Get second field value
    var v2 = getField("Testo6498").value;



    if ((v2 < 200 ) && (v1 >= 0)) {event.value = v1 * v2;


    }


    else if (v1 = "" ) { event.value = "";


    }

    else if (v2=200) {event.value=""}

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,019
    Java non si inocula nei documenti PDF. Quello è JavaScript.
    Sposto nel forum "JavaScript".

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    grazie e scusami non sono molto esperto

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,149
    Ciao e benvenuto, da un rapido sguardo noto un errore nelle condizioni. Hai usato un operatore di assegnazione "=" anziché quello di confronto (uguaglianza) "==":

    Questo:
    codice:
    else if (v1 = "" )
    [...]
    else if (v2=200)
    .
    anziché questo:
    codice:
    else if (v1 == "" )
    [...]
    else if (v2==200)
    .
    In diversi linguaggi di programmazione (uno tra tanti, Visual Basic) viene usato uno stesso operatore per entrambi i casi (assegnazione e confronto), mentre in JavaScript (e molti altri linguaggi, specialmente quelli basati sul modello C-like) si utilizzano i due diversi operatori.

    E' un errore abbastanza comune per i principianti ma anche per i meno principianti, soprattutto quando si passa da un linguaggio all'altro in cui si utilizzano diverse sintassi come in questo caso.

    Chiaramente il tuo codice risulta comunque valido dal momento che è anche possibile eseguire l'assegnazione dentro una condizione; la condizione a quel punto verrà però valutata in base al valore che stai assegnando a quelle variabili. L'interprete JavaScript esegue un casting implicito (conversione automatica del tipo di dato) di quei valori (che converte in valori di tipo booleano) per poter poi valutare la condizione.

    Di fatto questa condizione if(v1="") non verrà mai soddisfatta (cioè, sarà sempre falsa) perché per JavaScript il valore "" (stringa vuota) è pari al valore false.

    Al contrario, quest'altra if(v2=200) sarà sempre soddisfatta dal momento che, per JavaScript, qualsiasi numero diverso da 0 è pari al valore true.




    PS: come già ti è stato indicato Java non è JavaScript, chiaramente anche questo è un errore abbastanza comune per i poco esperti, come tu stesso hai affermato. Qui un articolo, sempre valido, che fornisce qualche nozione sull'argomento:
    https://www.html.it/pag/15242/javascript-non-java/
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  5. #5
    killerWorm grazie mille per la tua risposta ma avevo già provato l'opzione == e il risultato è lo stesso, e cioè se v1="" ottengo comunque come risultato 0,00 mentre io ho bisogno che se v1="" il risultato sia uguale "" perchè per me 0,00 è un risultato significante..

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,149
    Sull'uso dell'operatore "==" non si discute, devi usare quello come ho spiegato.

    Ripeto, ho dato solo un rapido sguardo e quello è il primo errore che ho notato.
    Ora ho provato il tuo script e posso dirti che la logica utilizzata per impostare quelle 3 condizioni è sbagliata (a parte l'operatore).

    La prima condizione if((v2 < 200 ) && (v1 >= 0)) risulta vera anche quando v1=""

    Infatti, come ho spiegato prima, per JavaScript il valore "" e il valore 0 corrispondono entrambi al valore false quando utilizzati in una condizione (questo a grandi linee).

    In sostanza, quando v1="" sarà verificata la condizione v1 >= 0 perché la condizione "" >= 0 risulta true.

    Per questo motivo la prima condizione viene "vista" anche quando v1="" eseguendo di fatto l'operazione e saltando le altre condizioni.

    Per risolvere puoi invertire l'ordine di quelle tre condizioni, mettendo come prima condizioneif(v1 == "")

    Più semplice farlo che dirlo:
    codice:
    if (v1=="") {
      event.value = "";
    } else if (v2==200) {
      event.value = "";
    } else if (v2<200 && v1>=0) {
      event.value = v1 * v2;
    }
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  7. #7
    KillerWorm sei un genio!! ti ringrazio tantissimo per le tue dritte.

    posso chiederti ancora una cosa se posso?

    se volessi usare un campo check del pdf (quello che mette la spunta quando ci clikki) per fare un ulteriore controllo che codice dovrei scrivere?

    grazie mille

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,149
    KillerWorm sei un genio!! ti ringrazio tantissimo per le tue dritte.
    Figurati.

    posso chiederti ancora una cosa se posso?

    se volessi usare un campo check del pdf (quello che mette la spunta quando ci clikki) per fare un ulteriore controllo che codice dovrei scrivere?
    Una dritta al volo posso anche dartela ma da regolamento è vietato mischiare argomenti diversi in una stessa discussione.

    Per controllare un checkbox dopo che ci si clicca sopra è possibile utilizzare l'evento change.
    Per verificare se risulta spuntato oppure no, puoi leggerne la proprietà checked.

    Se poi ti serve ulteriore aiuto ti consiglio di aprire eventualmente una nuova discussione.

    Buon proseguimento.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

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