如何轻松解决kotlin字符串算数等式计算

注意:

  下面代码都是用kotlin代码开发,其实跟java语言开发差不多,算法思路是一样。
该算法只能对加、减、乘、除进行基本运算,对复杂等式不能计算,记住,不要等一下说博主坑你们。

一、把字符串等式转化为子字符串

首先,把字符串转换为字符数组,并对每一个字符进行判断,该字符是数字,设置一个变量,来存储数字,当下一个字符是运算符,先判断存储数字变量中是否为空,如果不为空,就把该变量数据添加到字符串集合中,并把字符也进行存储,详细代码如下:

 private fun countNum(result: String): Int {
        val numArray: CharArray = result.toCharArray()
        val m = ArrayList<String>()

        var num: String = ""
        for (n in 0..numArray.size - 1) {
            val char = numArray[n].toString()
            when (char) {
                "-", "+", "*", "/" -> {
                    if (!num.isEmpty()) {
                        m.add(num)
                        num = ""
                    }

                    num += char
                    m.add(num)
                    num = ""
                }
                else -> {
                    num += char
                    if (n == numArray.size - 1) {
                        m.add(num)
                    }
                }
            }

        }
        return num(m)
    }

二、对等式进行运算。

通过集合中数据获取乘、除运算符号个数,并通过一个变量存储以来,计算个数方便到时候循环计算乘、除次数,接下来进行计算,遍历集合中数据,进行计算运算符号前一个数字和后一个数字,并存储到集合中,移除参加运算数据。
先计算乘除,再计算加减
 private fun num(number: ArrayList<String>): Int {
        var one: Float
        var two: Float
        var result: Float = 0f
        var count: Int = 0
        var total:Int=0
        var flag:Int=0
        //计算出有乘除个数
        (0..number.size - 1)
                .filter { number[it] == "*" || number[it] == "/" }
                .forEach { count += 1 }

        for (m in 0..count) {
            loop@ for (n in 0..number.size - 2) {
                val m = number[n]
                when (m) {
                    "*", "/" -> {
                        one = number[n - 1].toFloat()
                        two = number[n + 1].toFloat()
                        if ("*" == m) {
                            result = one * two
                        } else if ("/" == m) {
                            result = one / two
                        }
                        number[n] = result.toString()

                        number.removeAt(n + 1)
                        number.removeAt(n - 1)
                        break@loop
                    }
                }

            }
        }
        System.out.println("数据1"+number.toString())
        for(m in 0..number.size-1){
            val n = number[m]
            when(n){
                "+","-" ->{
                    if ("+" == n) {
                        flag=0
                    } else if ("-" == n) {
                        flag=1
                    }

                }
                else ->{
                    if(flag==0){
                        System.out.println(number[m].toFloat().toInt())
                        total += number[m].toFloat().toInt()
                    }else if(flag==1){
                        total -= number[m].toFloat().toInt()
                    }
                }
            }
        }

        System.out.println("数据2"+number.toString())
        return total
    }


到这里就结束,其实很简单。

根据提供的引用内容,Kotlin是一门非研究性的语言,它是一门非常务实的工业级编程语言,它的使命就是帮助程序员们解决实际工程实践中的问题。使用Kotlin可以让Java程序员的生活变得更好,消除了Java中的一些常见问题,如空指针错误、冗长的样板代码和啰嗦的语法限制等。Kotlin简单、实用、语法简洁而强大,安全且表达力强,极具生产力。 关于"计算报酬"这个问题,Kotlin本身并没有提供直接计算报酬的功能。但是可以使用Kotlin来编写应用程序来实现报酬的计算Kotlin可以与Java类交互,反过来也是一样,这意味着可以重用现有的代码库,并将其迁移到Kotlin中。通过使用Kotlin编写应用程序,您可以根据特定的需求和规则来实现报酬的计算逻辑。 此外,Kotlin还提供了丰富的库和工具,可以用于处理和计算各种数学和几何问题。例如,可以使用带有cg算法的Kotlin库来进行凸包计算、线相交计算、Voronoi图等几何计算。这些库可以在Android和JavaFx桌面应用程序中使用,以解决游乐场的几何计算需求。 总而言之,Kotlin作为一门多用途的编程语言,可以用于解决实际工程实践中的问题,包括报酬的计算。通过编写应用程序并使用适当的库和工具,可以实现报酬的计算和其他几何计算功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值