第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

輸入字符串而不是整數(shù)時,停止控制臺多次打印相同的消息

輸入字符串而不是整數(shù)時,停止控制臺多次打印相同的消息

Go
繁星點點滴滴 2022-05-23 17:22:53
在我的 CLI 程序中,我有這個功能,用戶可以告訴我他們想要多少特定產品的項目。因此,此輸入應為整數(shù)。我目前遇到一個問題,如果他們輸入一個字符串,它會出錯,expected an integer但隨后還會再次打印多次而不是一次。例子:How many Fruit Tea would you like to buy? qweexpected integerHow many Fruit Tea would you like to buy? expected integerHow many Fruit Tea would you like to buy? expected integerHow many Fruit Tea would you like to buy?下面是處理此功能的代碼for {    fmt.Printf("How many %v would you like to buy? ", product.Name)    _, err := fmt.Scan(&response)    if err != nil {        fmt.Println(err)        continue    }    if ok, err := validResponse(response); ok {        break    } else {        fmt.Println(err)        continue    }}在這個循環(huán)中我必須改變什么,所以它只重復一次問題?
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

如果可以,將responsefrom的類型切換為int,然后使用包(例如)string解析輸入字符串。我懷疑正在嘗試將您輸入的每個字符作為單獨的 int 讀取,每次都失敗,并且每次都運行循環(huán),直到所有字符都被消耗完。strconvstrconv.Atoi()Scan


例如


    for {

        var response string

        fmt.Printf("How many %v would you like to buy? ", product.Name)

        _, err := fmt.Scanln(&response)

        if err != nil { // probably don't need to check err from Scan()

            fmt.Println(err)

            continue

        }

        num, err := strconv.Atoi(response)

        if err != nil {

            fmt.Println("Enter an integer.")

            continue

        }


        if ok, err := validResponse(num); ok && err==nil {

            break

        } else {

            fmt.Println(err)

            continue

        }

    }


查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號