我实际上有点麻烦......
我有一个计算器,但是当我想用它们划分nubers时,我有一个恐慌错误,说你不能除以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 run calc.exe / 3 2 [Infinite args,...]
答案 0 :(得分:1)
如果你的第一个参数总是一个操作符选择,你可以在你的main函数中执行类似的操作,你的main中有两个问题,你忽略了一个字符串的转换错误为int然后这个索引你的数组设置为0,你定义的数组大于你需要的数组,因为你的第一个参数不是你的div函数的数字
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])
}
}