2017-07-29 65 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) 
相关问题