RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 898513
Accepted
Виталий Сорокин
Виталий Сорокин
Asked:2020-10-27 15:29:26 +0000 UTC2020-10-27 15:29:26 +0000 UTC 2020-10-27 15:29:26 +0000 UTC

无法在 kotlin 字符串中正确添加数字

  • 772

我正在学习 kotlin 并遇到了问题。
输入是一个由不带空格的整数组成的字符串。有必要找到偶数的总和并将算法作为一个单独的函数来实现。
请注意,对于第 660308340 行,输出将为 24 (6+6+8+4)。
一切都会好的,但只是在循环中出于某种原因我总是添加 54,并且这一行的输出变为 360。
为了检查,我在循环中添加了当前处理的数字 (i) 的值的输出和值 b。i 显示正确,但此处 b 由于某种原因,每次新通过都会增加 54

fun calculateEvenDigits(input:String): Int{
    var b = 0
    for(i in input){
        if (i.toInt() % 2 == 0){
            b+=i.toInt()
            println("i = $i, b = $b")
        }
    }
    return b
}
fun main(args: Array<String>) {
    val a : String? = readLine()
    if(a!=null){
        print(calculateEvenDigits(a.toString()))
    }
}
алгоритм
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Pavel Shabanov
    2020-11-17T20:19:58Z2020-11-17T20:19:58Z

    我们将 Char 转换为 String,然后再转换为 Int,否则我们得到字符代码。

    fun calculateEvenDigits(input: String): Int {
        var sum: Int = 0
        var temp: Int = 0
        for (x in input) {
            temp = x.toString().toInt()
            if (temp % 2 == 0) sum += temp
        }
        return sum
    }
    
    • 4
  2. Best Answer
    insolor
    2020-08-01T02:35:53Z2020-08-01T02:35:53Z

    当您使用 方法转换字符串字符时toInt(),您会得到字符代码(例如'0'.toInt() == 48)而不是数字的值。您可以从每个字符中减去零代码,然后得到一个数值(我们假设输入处只有数字):

    fun calculateEvenDigits(input: String): Int {
        var sum = 0
        for(c in input) {
            val digit = c - '0'
            if (digit % 2 == 0) {
                sum += digit
                println("c = $c, sum = $sum")
            }
        }
        return sum
    }
    

    对于字符串,660308340输出将是:

    c = 6, sum = 6
    c = 6, sum = 12
    c = 0, sum = 12
    c = 0, sum = 12
    c = 8, sum = 20
    c = 4, sum = 24
    c = 0, sum = 24
    24
    

    您也可以使用该方法Character.getNumericValue。对于字符 from '0'to'9'它返回相应的数值,对于拉丁字母 from 'a'to'z'和 from 'A'to 它'Z'返回从 10 到 35 的值,对于其他字符它返回 -1。在上面的代码示例中,只需将行更改val digit = c - '0'为val digit = Character.getNumericValue(c).

    • 3
  3. Leonardo da Vinci Jr.
    2020-08-08T00:18:31Z2020-08-08T00:18:31Z

    这样写就容易多了,意思和上面差不多,只是稍微通过其他函数就知道了(目前我只是在学习Kotlin),可能不太对

    fun calculateEvenDigits(input:String): Int{
        var cnt:Int = 0
        
        for (c in input) {
            val i:Int = Character.getNumericValue(c)
            if (i % 2 == 0) cnt += i
        }
        return cnt
    }
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5