Java冒泡出现了逻辑错误,求前辈指教
问题描述:
package Demo01;
import java.util.Scanner;
public class Demo11 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int [] arr = new int [5];
for(int i = 0;i < 5;i++){
System.out.println("请输入第:"+(i+1)+"个数");
arr[i] = sc.nextInt();
}
int a = 0;
for(int j = 0;j < arr.length - 1;j++){
for (int k = 0; k < arr.length - j; k++) {
a = arr[k];
arr[k] = arr[k+1];
arr[k+1] = a;
}
}
for(int l = 0;l < arr.length - 1 ;l++){
System.out.println(arr[l]);
}
}
}
打印的时候少了一个数,是什么鬼?
答
Scanner sc = new Scanner(System.in);
int [] arr = new int [5];
for(int i = 0;i < 5;i++){
System.out.println("请输入第:"+(i+1)+"个数");
arr[i] = sc.nextInt();
}
int a = 0;
for(int j = 0;j < arr.length - 1;j++){
for (int k = 0; k < arr.length - j-1; k++) {
if(arr[k] > arr[k+1]){
a = arr[k];
arr[k] = arr[k+1];
arr[k+1] = a;
}
}
}
for(int l = 0;l < arr.length ;l++){
System.out.println(arr[l]);
}
答
最后输出数组错了
for(int l = 0;l < arr.length ;l++){
System.out.println(arr[l]);
}
答
package Demo01;
import java.util.Scanner;
public class Demo11 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int [] arr = new int [5];
for(int i = 0;i < 5;i++){
System.out.println("请输入第:"+(i+1)+"个数");
arr[i] = sc.nextInt();
}
int a = 0;
for(int j = 0;j < arr.length - 1;j++){
for (int k = 0; k < arr.length - j; k++) {
if(arr[k] > arr[k+1]){
a = arr[k];
arr[k] = arr[k+1];
arr[k+1] = a;
}
}
}
for(int l = 0;l < arr.length ;l++){
System.out.println(arr[l]);
}
}
}
改了改 还是不行,开始报错了
答
数组越界了, k<arr.length -j -1 就对了
for (int k = 0; k < arr.length - j-1; k++) {
}