Android Studio成倍增加奇怪的结果

时间:2019-03-22 06:12:12

标签: android arrays kotlin

我正在尝试将数字数组相乘。应该很简单,但是由于某些原因,我得到了很多数字,而且我不知道自己在哪里做错了。

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

        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,它就可以正常工作。我想念什么?

1 个答案:

答案 0 :(得分:1)

您得到的输出是好的

因为您要乘以数字的ASCII值而不是数字本身

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

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

例如:public static List<Instrument> SplitCsv(string csv) { var textReader = new StringReader(@"D:\CSVStuff\Jasper.csv"); var csvr = new CsvReader(textReader); var instrumentList = csvr.GetRecords<Instrument>().ToList(); return instrumentList; } 之类的东西,您可能已经注意到,我不知道kotlin。 :)