Primavera NumberFormatException: Impossibile convertire il valore di tipo ” java.lang.Stringa’ di tipo ” java.lang.Lungo

Non so se mi sto perdendo qualcosa di veramente di base, ma questo è quello che vorrei fare.

Vorrei fare un rest API chiamata a questo indirizzo:

https://localhost:8080/fetchlocation?lat=-26.2041028&lng=28.0473051&raggio=500

Il mio metodo è:

public void fetchlocation(@RequestParam Long lat, @RequestParam Long lng, @RequestParam int radius){ //fetches location}

Ottengo questo errore:

“timestamp”: 1442751996949, “status”: 400, “errore”: “Bad Request”,
“eccezione”: “org.springframework.i fagioli.TypeMismatchException”,

“message”: “Impossibile convertire il valore di tipo” java.lang.Stringa’ di
richiesta di tipo ” java.lang.Lungo’; eccezione nidificata è
java.lang.NumberFormatException: Per la stringa di input: \”-26.2041028\””,

“percorso”: “/fetchlocation”

Credo che sia perché il resto API riceve le coordinate come Corde, invece di Anela quando faccio la chiamata. Come faccio a verificare che l’API rest ottiene il Long e non il valore di Stringa quando viene effettuata la chiamata?

Ho potuto facilmente trovare il metodo di lavoro quando cambio l’API rest metodo per prendere le Stringhe come parametri, ma per il tipo di controllo, preferirei usare Anela.

public void fetchlocation(@RequestParam String lat, @RequestParam String lng, @RequestParam String radius){ //fetches location}
  • Il numero non è Lunga, ma piuttosto un Float/Double. A causa della virgola mobile il numero non può essere convertito a Lungo (da la stringa ricevuta in originale)
  • Immagino che si desidera utilizzare qualcosa come un Double per i valori delle coordinate. Altrimenti si sta andando a perdere un sacco di precisione per la tua posizione. (Se riuscirete nel vostro sforzo per arrotondare le coordinate al numero intero più vicino, allora si sta andando ad avere un margine di errore di circa +/- 35 miglia in ogni direzione.)
InformationsquelleAutor Simon | 2015-09-20



2 Replies
  1. 3

    Il numero che si sta tentando di convertire in java.lang.Long è -26.2041028.

    Il tuo numero contiene un .(decimale). Questo non è consentito per Longs. È necessario utilizzare java.lang.Double.

    E successo anche il tuo numero con un L per Long o un D per Double per inizializzazioni statiche. Anche se non richiesto, si rende il codice più leggibile.

    Come, -26.2041028D per Double.

    • Grazie – questo è il lavoro ora, non posso credere che ho perso. Una volta ho fatto un doppio, il resto chiamata api lavorato. Grazie!
    • Lol, non l’ho mai usato qualsiasi quadri. Ma ho esperienza di scrittura core codice Java da 2 anni. 1 suggerimento che voglio dare a tutti i framework utenti, ogni volta che si ottiene un errore che si sono troppo incazzato con, basti pensare a tutte le basi che u hai imparato nel tuo bigenner classe Java. 🙂 Felice Di Codifica!
    • Il D non è necessaria o consigliata.
  2. -2

    È necessario assicurarsi che la Stringa che si sta convertendo a Lungo contiene solo numeri. Che significa, ad esempio, una stringa come questa, “10d” non è convertibile in un Lungo, di conseguenza, l’eccezione.

Lascia un commento