Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 围棋:我试图猜测我的数字,但我的程序无法正确解释数字_Go - Fatal编程技术网

Go 围棋:我试图猜测我的数字,但我的程序无法正确解释数字

Go 围棋:我试图猜测我的数字,但我的程序无法正确解释数字,go,Go,当我运行这个程序时,我的程序总是吐得太低,请再猜一次。我输入:100作为要猜的数字,然后猜到101,它说的太低了。我现在真的不知道该怎么办,有人知道这个程序为什么会这样做吗? 笔记: input21总是=到0您需要了解类型扫描仪的工作原理。仔细阅读类型扫描器及其方法的文档,并查看示例 例如,Scan将扫描器提前到下一个标记,然后通过Bytes或Text方法可以使用该标记 对于缓冲流输入,每个文件有多个扫描仪是危险的 猜一个你自己输入的数字是没有意思的。使用随机数生成器,例如“package ma

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

您需要了解类型扫描仪的工作原理。仔细阅读类型扫描器及其方法的文档,并查看示例

例如,Scan将扫描器提前到下一个标记,然后通过Bytes或Text方法可以使用该标记

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

猜一个你自己输入的数字是没有意思的。使用随机数生成器,例如“package math/rand”

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

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)
}

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


当您添加此正确的错误处理时,您将看到程序失败的地方。

我没有重置扫描仪,在if结束时重新评估扫描仪,您必须重新声明strconv.Atoi

您尝试过进行任何调试吗?看看input21的设置位置。另外,我不知道为什么你有两个不同的扫描仪读取标准输入。打印你正在读取的值,看看它们是什么
package main

import (
    "bufio"
    "fmt"
    "math/rand"
    "os"
    "strconv"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    var number = rand.Intn(100)
    fmt.Println("Make a guess:")
    var scanner = bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        var guess, err = strconv.Atoi(scanner.Text())
        if err != nil {
            fmt.Print("Input error")
        } else if guess == number {
            break
        } else if guess > number {
            fmt.Print("Too high")
        } else if guess < number {
            fmt.Print("Too low")
        }
        fmt.Println(", Guess again:")
    }
    if scanner.Err() != nil {
        fmt.Println("I give up!")
    }
    fmt.Println("You win!")
}