GO:我正在尝试猜测我的号码,但我的程序不会正确解释数字

时间:2016-03-20 22:51:24

标签: go

package main

import "fmt"
import bf "bufio"
import "os"
import "strconv"

type SVC int

func main() {
        fmt.Println("Loaded")
        var gmber = bf.NewScanner(os.Stdin)
        gmber.Scan()
        i := 1
        for i < 40 {
                fmt.Println("\n")
                i++
        }
        var input2 = bf.NewScanner(os.Stdin)
        fmt.Println("Make a guess:")
        var input21, err = strconv.Atoi(input2.Text())
        var gmber1, err0 = strconv.Atoi(gmber.Text())
        input2.Scan()
        for {
                if input21 == gmber1{
                        break
                }
                if input21 > gmber1 {
                        fmt.Println("Too high, Guess again")
                        input2.Scan()
                }
                if input21 < gmber1 {
                        fmt.Println("Too low, Guess again")
                        input2.Scan()
                }
        }
        fmt.Println("You win!")
        fmt.Println(err)
        fmt.Println(err0)
}

当我运行这个程序时,我的程序总会吐出来#34;太低,再次猜猜&#34;。我输入:100作为猜测的数字,然后猜到数字101,它说太低了。我现在真的不知道该怎么做,有人知道为什么这个程序会这样做吗? 笔记: input21总是=到0

3 个答案:

答案 0 :(得分:2)

您需要了解Scanner的工作原理。请仔细阅读Family.update( { groupId: someGroupId, "parents.mobile": {"$exists":"true"} }, { $unset : { "parents.$.mobile" : 1 } }, false, true ).then(function() { // do other stuff }); 及其方法的文档,并查看示例。

package bufio: type Scanner

例如,“扫描将扫描仪推进到下一个令牌,然后通过字节或文本方法提供。”

对于缓冲流输入,每个文件有多个扫描程序是危险的。

猜猜你自己输入的数字并不好玩。使用随机数生成器,例如'package math / rand`。

解释代码的所有问题需要很长时间,所以这是一个简单的例子,

type Scanner

答案 1 :(得分:2)

每当您有一个返回error值的函数时,您必须检查它是否为nil。只有在完成后才能访问该函数返回的任何其他值。

添加正确的错误处理后,您将看到程序失败的位置。

答案 2 :(得分:0)

我没有重置扫描仪,在重新评估扫描仪的if的末尾,你必须重新声明strconv.Atoi