其实我有点麻烦...
我有一个计算器,但是当我想用它们除以 nubers 时,我有一个 panic err 说你不能除以 0。
好吧,我知道在数学中我们不能除以 0,但我不会将 0 放入我的整数中。
知道问题所在吗?
这是代码:
package main
import (
"fmt"
"os"
"strconv"
)
func mult(nums ...int) {
result := 0
total := 1
for _, num := range nums {
result = total * num
total = result
}
fmt.Println(result)
}
func add(nums ...int){
result := 0
total := 0
for _, num := range nums {
result = total + num
total = result
}
fmt.Println(result)
}
func sub(nums ...int){
result := 0
total := 0
for _, num := range nums {
result = num - total
total = result
}
fmt.Println(result)
}
func div(nums ...int){
result := 1
total := 1
for _, num := range nums {
result = num / total
total = result
}
fmt.Println(result)
}
func main() {
var d [] int
var args= os.Args[1:]
nums := make([]int, len(args))
for i := 0; i < len(args); i++ {
nums[i], _ = strconv.Atoi(args[i]);
strconv.Atoi(args[i])
d = append(d, nums[i])
}
num := d
if os.Args[1] == "*"{
mult(num...)
} else if os.Args[1] == "+"{
add(num...)
} else if os.Args[1] == "-"{
sub(num...)
} else if os.Args[1] == "/"{
div(num...)
} else {
fmt.Println("Well well well, you didn't entered a right operand ! Try with +, -, /, or * between double quotes")
}
}
我要运行这段 go 代码的命令是:
go run calc.exe / 3 2 [Infinite args,...]
最佳答案
如果你的第一个参数总是一个运算符选择,你可以在你的主函数中做类似的事情,你在你的主函数中有两个问题,你忽略了字符串到 int 的转换错误,然后是这个索引你的数组设置为 0,并且你定义的数组比你需要的大,因为你的第一个参数不是你的 div func 的数字
nums := make([]int, len(args)-1)
for i := 0; i < len(args); i++ {
ret, errAtoi := strconv.Atoi(args[i])
if errAtoi != nil {
fmt.Println(errAtoi.Error())
} else {
nums[i-1] = ret
d = append(d, nums[i-1])
}
}
关于Golang 计算器 -- 无法除以 0 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48220023/