首页 > 解决方案 > 计算数字而不分开它们

问题描述

我无法解决这个问题,如何分离数字并进行所需的算术运算

https://codeforces.com/group/MWSDmqGsZm/contest/219158/problem/O

这是我的代码,我不知道它有多真实

fun main(args:Array<String>) {

val scanner = Scanner(System.`in`)


var s: String = read()!!
var c: Char? = null
var a: String = ""
var b: String = ""
var t: Boolean = true
for (i in 1..s.length) {
    if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/') {
        c = s[i]
        t = false
    }else{
        if(t){
            a+=s[i]
        }else{
            b+=s[i]
        }
    }
}

if(c=='+'){
    println(a+b)
}else if (c=='-'){
    println( "$a - $b" )
}else if (c=='*'){
    println("$a * $b")
}else{
    println("$a / $b")
}

标签: kotlin

解决方案


试试这个代码:

fun main() {
    val str = readLine()!!
    val (index, operator) = str.findAnyOf(listOf("+", "-", "*", "/"))!!
    val a = str.substring(0, index).toInt()
    val b = str.substring(index + 1).toInt()
    val result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> -1
    }
    println(result)
}

findAnyOf文档:

查找此 char 序列中任何指定 [strings] 的第一次出现。
返回 [strings] 中第一次出现的匹配字符串和匹配的字符串的索引对,或者null如果没有找到 [strings]。

其余的逻辑非常简单。


推荐阅读