如何在主类上调用java方法

时间:2015-07-03 10:28:08

标签: java methods

我是Java的初学者,我有一个非常简单的问题。我试图完成一项活动而忘记了如何在主类上调用方法。

每当我尝试在主类上调用computeSum方法时,我都会收到错误。

Error: Error: Main method not found in class array.Array, please define the main method as: public static void main(String[] args)


public class Array{
    public static void main(String[] args ){
        //Dont know what to put here to call computeSum
    }

    public int computeSum(int[] nums){
        int sum = 0;
        for (int i=0; i<nums.length; i++){
            sum= sum+nums[i];
        }  
        return sum;    
    }
}

7 个答案:

答案 0 :(得分:2)

假设您的班级在 com.arr 包中。您可以在创建对象时指定类的限定名称。因为数组类已在 java.util 包中提供。最好将对象创建为您的Array类以及包名。

public static void main(String[] args){

             com.arr.Array a1 = new com.arr.Array();
             int[] numberArray = {1,7,9,0,45,2,89,47,3,-1,90,10,100};
              a1.computeSum(numberArray);
            }

computeSum()这是一个实例方法。我们必须为您的类创建Object以调用实例方法。

答案 1 :(得分:1)

你可以试试这个

public class Array{
public static void main(String[] args ){
    //Dont know what to put here to call computeSum
    int[] nums = {1,2,3,4,5};        
    int sum=computeSum(nums);
    System.out.println(sum);
}

public static int computeSum(int[] nums){
    int sum = 0;
    for (int i=0; i<nums.length; i++){
        sum= sum+nums[i];
    }  
    return sum;    
}
}

答案 2 :(得分:0)

您需要创建一个实例来调用类的成员方法。

public static void main(String[] args ){
    Array myArray = new Array();
    int[] values = new int[] {1,2,3,4};
    myArray.computeSum(values);
}

答案 3 :(得分:0)

首先,您需要了解静态类/成员和实例类/成员之间的区别。

您的main方法是静态的 - 这是程序入口方法的标准方法 - 这意味着它可以立即使用而无需绑定到Array对象的实例。

您的computeSum方法是一种实例方法。这意味着您需要一个对象Array的实例来使用它,它将在该对象的上下文中执行。

您的选择:

1) 使computeSum静态:

public static void main(String[] args) {
    computeSum({1,2,3});   // or Array.computeSum() outside of Array
}
public static int computeSum (int[] nums) {
   int sum = 0;
   for (int i=0; i<nums.length; i++){
       sum= sum+nums[i];
   }  
   return sum;    
}

2) 创建Array对象的实例:

public static void main(String[] args){
    Array myArray = new Array();
    myArray().computeSum({1,2,3});
}
public static int computeSum (int[] nums) {
   int sum = 0;
   for (int i=0; i<nums.length; i++){
       sum= sum+nums[i];
   }  
   return sum;    
}

静态代码 - 不是在对象实例的上下文中运行 - 不能引用非静态的成员,这是有意义的,它如何知道您引用的成员的哪个对象实例(myArray1.computeSum()?或myArray2.computeSum()?它甚至不知道myArray对象的这两个实例存在。)

希望这会有所帮助。 :)

答案 4 :(得分:0)

您可以阅读有关实例方法和静态方法的信息。 computeSum()是一个实例方法,这意味着它需要调用一个Class Array对象,例如:

public static void main(String[] args){

     Array array = new Array();
     int[] nums = {1,2,3};
      array.computeSum(nums);
    }

或者,你可以使它成为一个静态的方法来使用它而不用一个对象,这是不推荐的,但是你想要的,这就是你可以这样做的方法:

public class Array{
public static void main(String[] args ){

      int[] nums = {1,2,3};
      int sum = computeSum(nums);
}

public static int computeSum(int[] nums){
    int sum = 0;
    for (int i=0; i<nums.length; i++){
        sum= sum+nums[i];
    }  
    return sum;    
}
}

答案 5 :(得分:0)

或者您可以仅使用反射进行更改;)

https://docs.oracle.com/javase/tutorial/reflect/

答案 6 :(得分:0)

首先,你的方法有一个属性是&#34; int [] nums&#34;调用您需要为属性设置值的方法。 请注意,在调用时,您不必为属性指定相同的名称。 例如:1 - int[] Myattribute = {1,2,3}; int sum = computeSum(Myattribute );

把这条线包含在你的主要工作中