初级会员
  • 第 37705 位会员
  • My_Days
  • 2019-05-28 19:20:56
  • Offline
  • 19 95

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了博文 Go语言之水仙花数
    你编写的代码真简洁,我使用的是笨方法,我有一个疑问,你可以帮我解答一下吗? 问题是:n1 = int64(str[0]) 既然string(str[0]) 可以直接将str[0]里面的值转换,那么为什么int64(str[0])显示转换值错误? package main import ( "fmt" "strconv" ) func narNum(num int64) { var str string str = strconv.Itoa(int(num)) var n1, n2, n3 int64 for i := 0; i < len(str); i++ { fmt.Printf("str1 %d = %c, 数据类型是 = %T\n", i, str[i], str) //因一直使用%v输出,导致输出的数字不对,将%v改为%c字符输出,总算让它1,5,3输出了 if i == 0 { fmt.Printf("num 的类型%T,str[0] 的类型%T\n,num的值%v,str[0]的值%c", num, str[0], num, str[0]) // n1 = int64(str[0]) n1, _ = strconv.ParseInt(string(str[0]), 10, 64) n1 *= n1 * n1 fmt.Println("n1 的值是", n1) } else if i == 1 { n2, _ = strconv.ParseInt(string(str[1]), 10, 64) // n2 = int64(str[1]) n2 *= n2 * n2 fmt.Println("n2 的值是", n2) } else if i == 2 { n3, _ = strconv.ParseInt(string(str[2]), 10, 64) // n3 = int64(str[2]) n3 *= n3 * n3 fmt.Println("n3 的值是", n3) } } if num == (n1 + n2 + n3) { fmt.Printf("%d 是水仙花数", num) } else { fmt.Printf("%d 不是水仙花数", num) } } func main() { //判断一个整数是否为水仙花数,所谓水仙花数是指一个3位数,其每个位数上的数字立方和 等于其本身, //例如,153 = 1*1*1 + 3*3*3 + 5*5*5 var num int64 fmt.Println("请输入一个水仙花数(三位数):") fmt.Scanln(&num) narNum(num) }