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
相关产品推荐
相关产品推荐

