Котлин Конвертирует стоимость Биткоина в стоимость Сатоши

#android #textview #android-edittext #bitcoin #divide

Вопрос:

//————————————————————————————

Привет, это мой самый первый «вопрос». Я счастлив быть частью сообщества. Я хочу получить стоимость монеты Сатоши (это 100.000.000 от 1 BTC). Я могу найти стоимость 1 BTC в долларах США. В принципе, могу ли я просто разделить стоимость 1BTC в долларах США на 100.000.000? Но как я могу поместить значение в текстовое представление или редактируемый текст?

//————————————————————————————

Ошибка Отладки.

 E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.thordalenterprise.satoshiconverter, PID: 19493
java.lang.NumberFormatException: For input string: "45,586"
    at java.lang.Integer.parseInt(Integer.java:615)
    at java.lang.Integer.parseInt(Integer.java:650)
    at com.thordalenterprise.satoshiconverter.MainActivity$loadPrice$1.onResponse(MainActivity.kt:65)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:929)W/atoshiconverte: Accessing hidden method Landroid/media/AudioManager;->getOutputLatency(I)I (greylist, reflection, allowed)V/AudioManager: isWiredHeadsetOn...I/Process: Sending signal. PID: 19493 SIG: 9
 

//————————————————————————————

 // Functions
private fun loadPrice() {
    val request: Request = Request.Builder().url(BPI_ENDPOINT).build()
    val EurView:TextView = findViewById<TextView>(R.id.EURreturn)
    val usdView:TextView = findViewById<TextView>(R.id.USDRETURN)
    val btcView:TextView = findViewById<TextView>(R.id.BitcoinViewReturner)
    val SatoshiC:EditText = findViewById(R.id.SatoshiCount)
    val ddx:EditText = findViewById(R.id.editTextNumber)

okHttpClient.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call?, e: IOException?) { }
    override fun onResponse(call: Call?, response: Response?) {
        val json = response?.body()?.string()

        val read = Scanner(System.`in`)

        // we get the json response returned by the Coin Desk API
        // make this call on a browser for example to watch the properties
        // here we get USD and EUR rates properties
        // we split the value got just to keep the integer part of the values
        val btcRate:String = "1"
        val SatoshiCoin:Int = 100000000

        val usdRate = (JSONObject(json).getJSONObject("bpi").getJSONObject("USD")["rate"] as String).split(".")[0]
        val satosh = usdRate.toInt() / 100000000

        val num = 2.toBigDecimal().divide(2.toBigDecimal()).toInt()

        //Problem start
        val satoshiValue = usdRate.toInt() / SatoshiC.text.toString().toInt() * satosh

        btcView.text = satoshiValue.toChar().toString()
        //Problem end
 

Ответ №1:

исключение java.lang.NumberFormatException: Для входной строки: «45 586»

означает , что ваша строка содержит , вы должны удалить, правильно отформатировать строку.

пример 45,586 вместо этого вы должны передать 45586 как строку

Комментарии:

1. О, хорошо, я понимаю. В этом есть смысл. Спасибо.