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
}
这个程序的工作原理:
- 遍历字符串中的每个字符
- 遇到数字时构建完整的数字(处理多位数)
- 遇到运算符时,将之前构建的数字根据符号加到结果中
- 更新下一个数字的符号
对于输入"2+3-4":
- 读取2,遇到+号,result = 0 + 1*2 = 2
- 读取3,遇到-号,result = 2 + 1*3 = 5
- 读取4,到达末尾,result = 5 + (-1)*4 = 1
这样就得到了正确结果1。

