Java用户输入整数冒泡排序异常:输出全为0和1求解决
问题解决:Java冒泡排序返回0和1而非排序结果
你的代码存在两处关键错误,导致无法正确实现输入收集和冒泡排序:
错误1:未正确存储用户输入
在输入循环中,你调用了sc.nextInt()但没有将返回值赋值给数组元素,反而执行myArr[i] ++。由于Java中int数组默认初始值为0,每次++后元素值变为1,最终数组全为1,自然输出结果不符合预期。
错误2:冒泡排序未标记交换状态
在冒泡排序的交换逻辑中,交换元素后没有将isSwapped设为true,导致do-while循环只会执行一次,无法完成完整的排序过程。
修正后的完整代码
import java.util.*; public class task2Q3 { public static void main (String []args) { Scanner sc= new Scanner(System.in); sc.useDelimiter("\n"); int [] myArr= new int[15]; // 询问用户每天使用平板的时长 for(int i=0; i<myArr.length; i++) { System.out.println("Enter the amount of time you spend on the tablet daily " + i); // 将输入值赋值给数组元素 myArr[i] = sc.nextInt(); } bubbleSort(myArr); for(int i=0; i<myArr.length; i++) { System.out.println(myArr[i]); } } public static void bubbleSort(int[] tms) { boolean isSwapped= false; do{ isSwapped= false; for(int i=0; i<tms.length-1; i++) { if(tms[i]>tms[i+1]) { int tmp= tms[i]; tms[i]= tms[i+1]; tms[i+1]= tmp; // 标记发生了交换 isSwapped = true; } } }while(isSwapped); } }
内容的提问来源于stack exchange,提问作者whos joe
相关产品推荐
相关产品推荐

