You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言实现冒泡排序时Scan获取动态输入运行报错问题求解

问题原因

  • 缺少读取待排序元素的逻辑:你当前代码仅读取了输入的第一个值作为切片长度,没有将后续输入的数字存入切片,切片所有元素都是默认初始值0,排序逻辑执行的是对全0切片的排序,自然不会得到你期望的结果。
  • 输入残留导致shell报错:未被Go程序读取的输入内容会在程序退出后被bash当成命令执行,这就是你看到bash: 4: command not found错误的原因。

修正后的代码

package main

import "fmt"

func main() {
    fmt.Println("请输入待排序数字的总个数(最多10个):")
    var count int
    fmt.Scanln(&count)
    // 限制最大长度为10
    if count > 10 {
        count = 10
    }
    inputSlice := make([]int, count)
    fmt.Println("请依次输入待排序的数字:")
    for i := 0; i < count; i++ {
        fmt.Scan(&inputSlice[i])
    }

    BubbleSort(inputSlice)

    fmt.Println("排序后的结果:", inputSlice)

}

func BubbleSort(input []int) {
    for i := 0; i < len(input)-1; i++ {
        for j := 0; j < len(input)-i-1; j++ {
            Swap(input, j)
        }
    }
}

func Swap(input []int, j int) {
    if input[j] > input[j+1] {
        input[j], input[j+1] = input[j+1], input[j]
    }
}

使用说明

运行程序后先输入待排序的数字个数,再依次输入对应数量的数字即可得到正确的排序结果,不会再出现shell报错的问题。

内容的提问来源于stack exchange,提问作者shouravRahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:03