如何解析输入字符串(如计算器)以获取运算符和操作数



我是Go编程语言的新手,我正在尝试构建一个非常简单的计算器。我遇到的问题是,如果有人输入4+25/10100-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")
        }
    }

给你一些指示。

  1. 要从line获取操作数,请尝试strings.FieldsFunc()
  2. 将您的操作数转换为float64尝试strconv.ParseFloat()fmt.Sscanf()
  3. 弄清楚您有什么操作+, -, /, *。也许与strings.ContainsRune().
  4. 对操作数执行操作并显示结果。
  5. 玩得愉快!

最新更新