编译本程序时出错:
class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
我收到以下错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot make a static reference to the non-static method Add5(int[]) from the type ArraysInMethods
at ArraysInMethods.main(ArraysInMethods.java:6)
答案 0 :(得分:6)
你去,让你的Add5
方法静态:
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
基本上它意味着只能从静态方法中调用静态方法,而Java中的main
方法是静态的。
编辑: 你为什么要那样做?因为类的静态成员不存在类的实例,非静态成员是否不会。如果你在没有创建一个试图调用非静态方法的类(有效)的实例的情况下调用静态方法,那么它将不起作用,因为在没有实例的情况下非静态方法不存在一个班级。
答案 1 :(得分:1)
静态方法和变量在类级别,可以使用类名引用调用,而非静态方法在对象级别,可以使用类的对象调用。
你可以做两件事。
将方法更改为静态
class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
创建类的对象并使用该对象调用类的方法。
class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
new ArraysInMethods().Add5(array);
for(int y : array){
System.out.println(y);
}
}
public void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}
答案 2 :(得分:0)
static
方法可以调用java中的static
方法。
Add5()
不是static
方法,因此编译时异常来了。
package com.org.test; class ArraysInMethods {
public static void main(String[] args) {
int array[]={1,6,2,5,3,8,9,0,5};
Add5(array);
for(int y : array){
System.out.println(y);
}
}
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
}