我改了一下
还是有问题不过我想不大了public class Num {
public static void main(String[] args) {
int n =0,j = 0,k = 0,l = 0,i = 0,m=0,q;
int a[] = new int[5];
for(int r=0;r<5;i++)
a[r]=r;
for(q=0;i<5;i++) //1
if(j == 5) j--;
for(j=0;j<5;j++) { //2
if(k == 5) k--;
if(j == i) j++;
for(k = 0;k<5;k++) { //3
if(l == 5) l--;
if(k == i) k++;
if(k == j) k++;
for(l = 0;l<5;l++) { //4,注意现在 l 是5
if(m == 5) m--; //为什么要减1,因为是5的话在下面打印时就会下标出错了
if(l == i) l++;
if(l == j) l++;
if(l == k) l++;
for(m= 0;m<5;m++) { //5
if(m == i) m++;
if(m == j) m++;
if(m == k) m++;
if(m == l) m++;
q++;
System.out.println(q + "," + a[i] + " " + a[j] + " " + a[k] + " " + a[l] + " " + a[m]);
if(i>j) n++;
if(j>k) n++;
if(k>l) n++;
if(l>m) n++;
System.out.println("有 " + n + " 个逆数。");
n = 0;
}
}
}
}
}
}

解决方案 »

  1.   

    排列就行
    我用别的方法作出来了
    不过我想不通为什么这个方法做不出呢
    我把另一个方法发出来大家就明白我的意思了

    public class exam6 {
    public static void main(String[] args){
    int[] a = {0,1,2,3,4};
    for(int j = 0;j<5;j++)
    for(int i=0;i < 5;i++) {
    int n=0;
    if(i == 0 && j == 0)
    System.out.println(a[0] + " " + a[1] + a[2] + a[3] + a[4] + "NO:" + n);
    int m;
    if(i<4f){
    m = a[i];
    a[i] = a[i+1];
    a[i+1] = m;
    }
    if(a[0]>a[1]) n++;
    if(a[1]>a[2]) n++;
    if(a[2]>a[3]) n++;
    if(a[3]>a[4]) n++;
    System.out.println(a[0] + " " + a[1] + a[2] + a[3] + a[4] + "NO:" + n);
    }
    }
    }