kotlin - 计算数字而不分开它们
问题描述
我无法解决这个问题,如何分离数字并进行所需的算术运算
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")
}
解决方案
试试这个代码:
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]。
其余的逻辑非常简单。
推荐阅读
- python - 在 kubernetes 中设置限制/请求的最佳策略是什么?
- sql - 通过从运行日期加减 2 天来过滤日期结果
- python - Python 3中字符串函数的意外输出
- python - 如何安装 plaidML / plaidML-keras
- aem - 通过 WAM 使用反向代理进行登录集成
- javascript - 为什么我需要两次声明返回类型?
- java - 如何在 Spring Security 的登录中获取自定义用户实体以进行自定义身份验证?
- r - R:如何在 grepl 中使用 if 语句
- excel - 如何在 VBA 中创建一个函数来显示指定范围内的单元格最后更新的日期?
- java - 如何在java中使用orderby和jco