2017-07-29 37 views
0

我想讓代碼循環,如果輸入的數字低於600,並且如果輸入包含字母和符號則循環。我無法做到。轉到 - 區分用戶輸入的數字和其他一切

package main 

import (
    "fmt" 
    "strconv" 
) 


func main() { 
    fmt.Println("How far in metres are the people away from the spacecraft?") 
    var people string 
    fmt.Scanf("%s",&people) 
     number, _ := strconv.Atoi(people) 
     for number < 600 { 
     if (number < 0 || number > 0 || people == "0"){ 
      fmt.Println("Too Close\nTry Again") 
     var people string 
     fmt.Scanf("%s",&people) 
     number, _ := strconv.Atoi(people) 
      fmt.Println(number) 
      }else{ 
      fmt.Println("Only Number Please\nTry Again") 
      var people string 
      fmt.Scanf("%s",&people) 
      number, _ := strconv.Atoi(people) 
      fmt.Println(number) 
      } 

     } 

fmt.Println("BLAST OFF !!!") 
} 
+3

ATOI返回兩個值。第二個,你忽略了,是一個錯誤。你應該檢查這個錯誤是不是零,在這種情況下,它可能不是一個數字。 – eugenioy

+0

eugenioy是正確的。一些其他語言有例外,如果您不處理它們,程序將停止工作。你需要確保你處理從Go中的函數/方法返回的錯誤,否則你的程序不會以你能理解的方式行事。 –

回答

0

eugenioy和Chrono Kitsune是正確的。
爲了澄清他們在說什麼代碼,這裏有一個例子:

var people string 
var err error 
var number int 
for { 
    fmt.Scanf("%s",&people) 
    number, err = strconv.Atoi(people) 
    if err == nil { 
     break 
    } 
    fmt.Println("Not a number, please try again") 
} 
fmt.Println(number) 
相關問題