dongyan1974
2018-11-09 21:20可以在Linux上正常运行程序,但不能在Windows上运行
I am currently learning Go lang. Trying it on different platforms: Linux, Windows When I run code on Linux it runs perfectly, but when I try this program on Windows it doesn't work.
Its just simple cmd calculator which allows simple operations like add number, multiply eg. Its not handling wrong input like characters. It's my first program for adoption Go syntax
What doesn't work:
- Parsing int
- Comparing input
Code:
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var operation int
var firstNumber float64
var secondNumber float64
fmt.Println("Simple cmd calculator")
repeat := true
for repeat {
fmt.Println("Enter number 1: ")
firstNumber = getNumber(*reader)
fmt.Println("Enter number 2: ")
secondNumber = getNumber(*reader)
fmt.Println()
selectOperation(*reader, &operation)
fmt.Print("You result is: ")
switch operation {
case 1:
fmt.Println(add(firstNumber, secondNumber))
case 2:
fmt.Println(subtract(firstNumber, secondNumber))
case 3:
fmt.Println(multiply(firstNumber, secondNumber))
case 4:
fmt.Println(divide(firstNumber, secondNumber))
}
fmt.Println("Do you want to continue? [Y/n]")
input, _ := reader.ReadString('
')
input = strings.Replace(input, "
", "", -1)
if !(input == "Y" || input == "y") {
repeat = false
}
}
}
func selectOperation(reader bufio.Reader, operation *int) {
fmt.Println("1. Add")
fmt.Println("2. Subtract")
fmt.Println("3. Multiply")
fmt.Println("4. Divide")
fmt.Print("Select operation: ")
input, _ := reader.ReadString('
')
input = strings.Replace(input, "
", "", -1)
number, _ := strconv.Atoi(input)
*operation = number
}
func getNumber(reader bufio.Reader) float64 {
input, _ := reader.ReadString('
')
input = strings.Replace(input, "
", "", -1)
convertedNumber, _ := strconv.ParseFloat(input, 64)
return convertedNumber
}
func add(a float64, b float64) float64 {
return (math.Round((a+b)*100) / 100)
}
func subtract(a float64, b float64) float64 {
return (math.Round((a-b)*100) / 100)
}
func multiply(a float64, b float64) float64 {
return (math.Round(a*b*100) / 100)
}
func divide(a float64, b float64) float64 {
return (math.Round(a/b*100) / 100)
}
Results:
Am I doing something wrong or it's not my bad?
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 在GoLang中运行SQL查询时,PQ Relation不存在
- postgresql
- insert
- 2个回答
- 以管理员身份运行Go程序
- admin
- windows
- command-line
- operating-system
- 1个回答
- 在同一Shell Windows中执行多个命令
- windows
- 1个回答
- 在win的VS code上运行tornado项目报路径错误
- python
- tornado
- 1个回答
- Sun JDK在Linux与Windows下表现悬殊,Linux下面很慢不知道要优化什么?
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
换一换