为什么这个基本的java程序没有编译

时间:2014-11-05 15:11:35

标签: java arrays methods

编译本程序时出错:

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)

3 个答案:

答案 0 :(得分:6)

你去,让你的Add5方法静态:

 public static void Add5(int x[]){
        for(int counter=0; counter < x.length; counter++){
            x[counter]+=5;
        }
    }

基本上它意味着只能从静态方法中调用静态方法,而Java中的main方法是静态的。

编辑: 你为什么要那样做?因为类的静态成员不存在类的实例,非静态成员是否不会。如果你在没有创建一个试图调用非静态方法的类(有效)的实例的情况下调用静态方法,那么它将不起作用,因为在没有实例的情况下非静态方法不存在一个班级。

答案 1 :(得分: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;
        }
    }
    

    }

  2. 创建类的对象并使用该对象调用类的方法。

    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;
         }
      }
 }