我是Go编程语言的新手,我正在尝试构建一个非常简单的计算器。我遇到的问题是,如果有人输入4+2
或5/10
或100-25
到命令行,我如何从这个字符串中获取运算符和操作数以执行等式?
这就是我到目前为止所拥有的,但这只是抓住了整个字符串
package main
import (
"bufio"
"fmt"
"os"
"stack" //stack code works perfectly
)
func main() {
// Read a line from stdin.
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := scanner.Text()
// fmt.Println(line)
//Separate the string based on operator and operands
// Push all of the characters onto the stack.
s := stack.New()
for i := 0; i < len(line); i++ {
if err := s.Push(line[i]); err != nil {
panic("Push failed")
}
}
给你一些指示。
- 要从
line
获取操作数,请尝试strings.FieldsFunc()
。 - 将您的操作数转换为
float64
尝试strconv.ParseFloat()
或fmt.Sscanf()
。 - 弄清楚您有什么操作
+, -, /, *
。也许与strings.ContainsRune()
. - 对操作数执行操作并显示结果。
- 玩得愉快!