Golang遇到问题需要帮助解决

Golang遇到问题需要帮助解决 有人能帮我解决这个问题吗?输入:s := “2+3-4” 输出:2+3-4 = 1。我是编程新手。

4 回复

中缀表达式转换为后缀表达式,然后依次入栈处理。中国大学数据结构教程中有此示例。

更多关于Golang遇到问题需要帮助解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


好的,这是转换后的Markdown内容:

你好,感谢你的回复。这是一个单数字,并且只包含“+”和“-”运算符。我也会尝试制作一个计算器。

你能提供更多的上下文信息吗?例如,是否允许使用两位数?是否允许使用其他运算符(除了 + 和 -)?

基本上,你需要编写一个简单的解析器,从左到右检查字符串的每个字符。最后,当你获取了所有的值和运算符后,你需要将它们求和。当然,如果允许使用两位数的值,以及允许使用更多的运算符,情况会变得更加复杂。如果允许使用浮点值等,那就更加复杂了。那么你基本上就是在编写一个计算器程序了……

或者,你可以尝试寻找一个包含“计算器”功能的包,它能够接收一个字符串并返回一个数字。我相信这样的包是存在的,但如果这是学校作业,这个解决方案可能不被允许。

func main() {
    fmt.Println("hello world")
}

这是一个简单的算术表达式求值问题。由于表达式只包含数字和加减运算符,我们可以直接遍历字符串进行计算。

package main

import (
    "fmt"
    "strconv"
)

func calculate(s string) int {
    result := 0
    currentNumber := 0
    sign := 1 // 1表示正号,-1表示负号
    
    for i := 0; i < len(s); i++ {
        ch := s[i]
        
        if ch >= '0' && ch <= '9' {
            // 构建当前数字
            currentNumber = currentNumber*10 + int(ch-'0')
        }
        
        if ch == '+' || ch == '-' || i == len(s)-1 {
            // 遇到运算符或字符串末尾时,将当前数字加到结果中
            result += sign * currentNumber
            currentNumber = 0
            
            // 设置下一个数字的符号
            if ch == '+' {
                sign = 1
            } else if ch == '-' {
                sign = -1
            }
        }
    }
    
    return result
}

func main() {
    s := "2+3-4"
    result := calculate(s)
    fmt.Printf("%s = %d\n", s, result) // 输出: 2+3-4 = 1
}

这个程序的工作原理:

  1. 遍历字符串中的每个字符
  2. 遇到数字时构建完整的数字(处理多位数)
  3. 遇到运算符时,将之前构建的数字根据符号加到结果中
  4. 更新下一个数字的符号

对于输入"2+3-4":

  • 读取2,遇到+号,result = 0 + 1*2 = 2
  • 读取3,遇到-号,result = 2 + 1*3 = 5
  • 读取4,到达末尾,result = 5 + (-1)*4 = 1

这样就得到了正确结果1。

回到顶部