【问题标题】:Android Studio multiply getting weird resultAndroid Studio 乘以得到奇怪的结果
【发布时间】:2019-03-22 06:12:12
【问题描述】:

我正在尝试将一个数字数组相乘。应该很简单,但由于某种原因,我得到了一些巨大的数字,我无法弄清楚我做错了什么。

我输入一个数字,它被分割成一个数组,它遍历数字并将它们相乘

        var iArray = i.toString().toCharArray()
        var iCount = iArray.count().toString()
        var x = 0
        var sum: Long = 1

        while(x < iCount.toInt()) {
            Log.i(iArray[x].toString(), "array");
            sum *= iArray[x].toLong()
            x++
            Log.i(sum.toString(), "sum");
        }

在 logcat 中,我可以看到数组中的正确数字。例如,如果我尝试 357,这就是我得到的结果

I/3: 数组 I/51:总和

I/5: 数组 I/2703:总和

I/7: 数组 I/148665:总和

但如果我只计算 3*5*7 就可以了。我错过了什么?

【问题讨论】:

    标签: android arrays kotlin


    【解决方案1】:

    你得到什么作为输出,没关系

    因为你乘的是数字的 ASCII 值而不是数字本身

    ASCII 值 3 是 51,5 是 53,将它们相乘结果 2703 是对的,依此类推

    如果要使用整数乘法,则必须使用将字符数组转换为整数数组或在乘法时考虑 ASCII 值。

    例如:sum *= (iArray[x].toLong()-'0') 类似这样的东西,我不知道 kotlin,你可能已经注意到了。 :)

    【讨论】:

    • 谢谢,我已经主演了一段时间了,但现在完全有道理了。通过更改修复: sum *= Character.getNumericValue(iArray[x].toInt())
    猜你喜欢
    • 2014-08-17
    • 1970-01-01
    • 2022-01-25
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多