菜鸟 问问引用问题。
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()进行静态引用。
不太明白,大侠们给讲讲。
------解决方案--------------------你把sort()方法写到类里面去呀
------解决方案--------------------/*static*/ -> static
------解决方案--------------------可能你是受了C的影响!
你这样直接的调用是不行的!
你可以尝试新建立一个类,然后将该方法放入其中,在调用的时候用:CLASS.NAME()
调用!
另外一个方法就是用加:STATIC
或者用你现在的类.NAME()来调用!
------解决方案--------------------另外如果你对这方面不是很理解可以看一下关于JAVA程序初始话的流程的文章!
STATIC的变量或者方法是在最初初时化的,如果按照你现在这样是不能在调用之前初始化!
如果你放到另外一个类里,会在调用之前进行初始化!
------解决方案--------------------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;
}
}
}
}
}
------解决方案--------------------是你引用的问题,不可以在静态的方法里引用非静态的方法
------解决方案--------------------在静态方法里不能引用非静态的方法,变量
但在非静态方法里可以引用静态方法与变量
main()函数是一个 静态的方法
要直接调用其他的方法的话 那个方法必须是静态的 也就是必须用 static 修饰