gpt4 book ai didi

for-loop - Go中的无限循环

转载 作者:行者123 更新时间:2023-12-01 22:21:45 25 4
gpt4 key购买 nike

我想让“for循环”循环3次或直到用户输入除整数以外的其他值。下面是我的代码,尽管这将运行无数次并打印出用户输入的第一个值。

package main

import "fmt"
import "bufio"
import "strconv"
import "os"
import "sort"

func main(){
emptySlice := make([]int, 3) // Capacity of 3
fmt.Println(cap(emptySlice))
scanner := bufio.NewScanner(os.Stdin) // Creating scanner object
fmt.Printf("Please enter a number: ")
scanner.Scan() // Will always scan in a string regardless if its a number

for i := 0; i < cap(emptySlice); i++ { // Should this not run 3 times?
input, err := strconv.ParseInt(scanner.Text(), 10, 16)
if err != nil{
fmt.Println("Not a valid entry! Ending program")
break
}
emptySlice = append(emptySlice, int(input)) // adds input to the slice
sort.Ints(emptySlice) // sorts the slice
fmt.Println(emptySlice) // Prints the slice
}

}

最佳答案

我认为有几个小错误,但是此版本应该可以正常工作:

package main

import "fmt"
import "bufio"
import "strconv"
import "os"
import "sort"

func main() {
emptySlice := make([]int, 3) // Capacity of 3
fmt.Println(cap(emptySlice))
scanner := bufio.NewScanner(os.Stdin) // Creating scanner object

for i := 0; i < cap(emptySlice); i++ { // Should this not run 3 times?
fmt.Printf("Please enter a number: ")
scanner.Scan() // Will always scan in a string regardless if its a number

input, err := strconv.ParseInt(scanner.Text(), 10, 16)
if err != nil {
fmt.Println("Not a valid entry! Ending program")
break
}
// emptySlice = append(emptySlice, int(input)) // adds input to the slice
emptySlice[i] = int(input)
}

sort.Ints(emptySlice) // sorts the slice
fmt.Println(emptySlice) // Prints the slice

}
我将提示移入了循环,并用直接分配给先前分配的 slice 条目替换了append调用。否则,调用append只会增加分片的大小。
我将排序和打印移到了循环之外,因为它们似乎也放置不正确。

关于for-loop - Go中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63045129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com