public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ

int a[]=new int[100];
for(int i=0;i<a.length;i++){
a[i]=(int)(Math.random()*100);
}
sort(a);//(1)
for(int j=0;j<=a.length;j++){
System.out.println("a["+j+"] = "+a[j]);
}
}
public /*static*/ void sort(int b[]){
int temp;
//for(int i=0;i<b.length;i++)
for (int i=0;i<b.length;i++) 
for(int j=0;j<b.length-i-1;j++){
if (b[i]<b[i+1]){
temp=b[i];
b[i]=b[i+1];
b[i+1]=temp;
}(1)那提示我不能对非静态方法sort()进行静态引用。
不太明白,大侠们给讲讲。

解决方案 »

  1.   

    你把sort()方法写到类里面去呀
      

  2.   

    /*static*/  -> static
      

  3.   

    可能你是受了C的影响!
    你这样直接的调用是不行的!
    你可以尝试新建立一个类,然后将该方法放入其中,在调用的时候用:CLASS.NAME()
    调用!另外一个方法就是用加:STATIC或者用你现在的类.NAME()来调用!
      

  4.   

    另外如果你对这方面不是很理解可以看一下关于JAVA程序初始话的流程的文章!STATIC的变量或者方法是在最初初时化的,如果按照你现在这样是不能在调用之前初始化!如果你放到另外一个类里,会在调用之前进行初始化!
      

  5.   

    sort方法写在main函数外面,你的冒泡法也写错了。
    package test;public class Test { public static void main(String[] args) { int a[] = new int[5];
    for (int i = 0; i < a.length; i++) {
    a[i] = (int) (Math.random() * 100);
    }
    sort(a);
    for (int j = 0; j < a.length; j++) {
    System.out.println("a[" + j + "] = " + a[j]);
    } } public static void sort(int b[]) {
    int temp = 0;
    for (int i = 0; i < b.length; i++) {
    for (int j = i + 1; j < b.length; j++) {
    if (b[i] > b[j]) {
    temp = b[j];
    b[j] = b[i];
    b[i] = temp;
    }
    }
    }
    }
    }
      

  6.   

    是不是这个意识。
    public class sort1{public /*static*/ void sort(int b[]){
    int temp;
    //for(int i=0;i<b.length;i++)
    for (int i=0;i<b.length;i++) 
    for(int j=0;j<b.length-i-1;j++){
    if (b[i]<b[i+1]){
    temp=b[i];
    b[i]=b[i+1];
    b[i+1]=temp;
    }
    }
      

  7.   

    在静态方法里不能引用非静态的方法,变量
      但在非静态方法里可以引用静态方法与变量
        main()函数是一个 静态的方法  
      要直接调用其他的方法的话 那个方法必须是静态的   也就是必须用 static 修饰