当前位置: 首页 > 知识库问答 >
问题:

如何将字符串类型的算术表达式转换为整数?

公良照
2023-03-14

这是我的代码后运行这段代码,我得到异常:

fun main( args : Array<String>) {


    var str:String = "(%d + %d)"
    var str1:String

    var a:Int = 12
    var b:Int = 13

    str1 = String.format(str,12,13)
    var c:Int = str1.toInt()

   print(c)

}

以下给出了堆栈跟踪的异常:

Exception in thread "main" java.lang.NumberFormatException: For input string: "(12 + 13)"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
    at java.base/java.lang.Integer.parseInt(Integer.java:638)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at MainKotlinKt.main(mainKotlin.kt:13)

请帮我解决这个问题。

共有2个答案

东方宜
2023-03-14

首先,你的代码不正确,其次,如果你想在kotlin中转换数学表达式,那么我会说kotlin没有任何内置函数来计算数学表达式,也没有str1。toInt()将在这方面帮助您。

toInt()用于将字符串转换为整数。例如“10”。toInt()=10。因此,我建议您在从Extraction中提取所需值后手动执行。

石正信
2023-03-14

kotlin. toInt()用于将字符串转换为整数,其中字符串必须包含整数值。

你可以从这里读到更多

但是如果你想计算一个表达式,那么这可以通过kotlin脚本引擎来完成。

例子:

val engine = ScriptEngineManager().getEngineByExtension("kts")!!
engine.eval("val x = 8")
val result = engine.eval("x + 2")
Assert.assertEquals(10, result)

你可以从这里获得更多信息

 类似资料:
  • 问题内容: 我想了一下,想到了一个有趣的问题,假设我们有一个配置(输入)文件,其中: 此外,我们还有s 的列表: 有没有办法将s(等)转换为代表lambda表达式的s?然后可以用作: 我将如何编写这样的方法? 我可以从JDK / JRE中重用吗? 我需要自己编写所有内容吗? 是否有可能将范围缩小到仅捕获lambda的其他内容? 问题答案: 马可对这个问题的评论是正确的。您无法从文件中读取裸Java

  • 问题内容: 我正在从在Varchar中具有原始提要的表中导入数据,我需要将varchar中的列导入到字符串列中。我尝试使用以及,但是却遇到了错误,因为有一些空字段,我需要将它们作为空或null检索到新表中。 请让我知道是否有相同的功能。 问题答案: 大胆猜测:如果您的值是一个空字符串,则可以使用NULLIF将其替换为NULL:

  • 问题内容: 此选择语句为我提供了算术错误消息: 尽管这一方法有效: 数据可能出问题了(我已经检查了空值,但没有一个)? 问题答案: 发现问题出在日期设置为9999-12-31时,可能要处理大数以十进制表示。从十进制更改为浮点,并且所有事物都像魅力一样起作用。

  • 问题内容: 我有以下查询: 无论我注释掉什么条件或聚合,总是会出现以下错误:。 我可以从这里去哪里?如何进一步调试? 编辑:样本数据 问题答案: 您是否尝试过将jaguarstartup时间强制转换为avg聚合中的bigint,如下所示… AVG(CAST(mc.JaguarStartupTime AS BIGINT)) 这应该解决算术溢出。 要计算平均平均值,服务器需要首先能够对所有int求和,

  • 问题内容: 我试图从返回的字符串转换成。Go中惯用的方式是什么? 问题答案: 例如,

  • 我试图从标准输入中读取一些非常大的数字,并将它们相加。 然而,要添加到BigInteger,我需要使用