为什么我的控制台输入没有终止。如果我删除代码countSwaps(a,size)然后控制台输入终止否则不

时间:2019-05-24 12:04:10

标签: java arrays

使用此代码时,我的循环没有终止。

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int size = Integer.parseInt(br.readLine());
    int[] a = new int[size];
    for(int i=0;i<a.length;i++) {
        a[i] = Integer.parseInt(br.readLine());
    }
    countSwaps(a,size);
}

但是当我删除代码循环的最后一行时,终止该终止,否则不会终止。

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int size = Integer.parseInt(br.readLine());
    int[] a = new int[size];
    for(int i=0;i<a.length;i++) {
        a[i] = Integer.parseInt(br.readLine());
    }
}

功能定义为:

private  static void countSwaps(int[] a, int size) {
    int temp,count=0;
    for(int i=0;i<size;i++){
        for(int j=0;j<size-1;i++){
            if(a[j]>a[j+1]){
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                ++count;
            }
        }
    }
    System.out.println("Array is sorted in"+count+"swaps.");
    System.out.println("First Element:"+a[0]);
    System.out.println("Last Element:"+a[a.length-1]);

}

2 个答案:

答案 0 :(得分:1)

您的内部循环永远不会递增j

答案 1 :(得分:0)

此行:

for(int j=0;j<size-1;i++){

您正在循环j,但增加了i ++

更改为:

private  static void countSwaps(int[] a, int size) {
    int temp,count=0;
    for(int i=0;i<size;i++){
        for(int j=0;j<size-1;j++){
            if(a[j]>a[j+1]){
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                ++count;
            }
        }
    }
    System.out.println("Array is sorted in"+count+"swaps.");
    System.out.println("First Element:"+a[0]);
    System.out.println("Last Element:"+a[a.length-1]);

}