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

Java新手求助:基于用户输入的冒泡排序无输出问题解决

问题分析与解决

你的代码核心问题是数组初始化错误,导致运行时抛出数组越界异常,程序直接崩溃,因此没有执行后续的排序和打印逻辑。下面是具体问题和修改方案:

1. 数组初始化错误

你一开始把数组初始化为长度为0的空数组 int[] arr = new int[0];,之后读取用户输入的n后直接给arr[i]赋值——但此时数组没有任何可访问的索引,运行时会抛出ArrayIndexOutOfBoundsException,程序直接终止,自然不会有输出。

修改方法:
必须在读取n之后,再根据n的大小初始化数组:

int n = sc.nextInt();
int[] arr = new int[n]; // 按用户输入的长度初始化数组
for (int i = 0; i < n; i++) {
    arr[i] = sc.nextInt();
}

2. 打印格式小问题

print_array方法里的输出语句System.out.println("" + arr.length + "values:");缺少空格,会导致输出格式混乱(比如显示5values:),建议调整为:

System.out.println(arr.length + " values:");

修改后的完整代码

import java.util.*;

public class Bubble {
    public static void bubble_sort(int[] arr) {
        for (int turn = 0; turn < arr.length - 1; turn++) {
            for (int j = 0; j < arr.length - 1 - turn; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    static void print_array(int[] arr) {
        System.out.println(arr.length + " values:");
        for (int j : arr) {
            System.out.print(j + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }

        bubble_sort(arr);
        print_array(arr);
        sc.close(); // 关闭Scanner避免资源泄漏
    }
}

运行说明

现在运行程序后,先输入数组长度n,再依次输入n个整数,程序就会执行冒泡排序并输出排序后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:48:22