簡體   English   中英

如何在主類上調用Java方法

[英]How to call java method on main class

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

假設您的班級在com.arr包中。 您可以在創建對象時指定類的限定名稱。 因為Array類在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以便調用實例方法。

你可以試試這個

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

您需要創建一個實例來調用類的成員方法。

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

首先,您需要了解靜態類/成員與實例類/成員之間的區別。

您的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對象的這兩個實例是否存在。

希望這可以幫助。 :)

您可以閱讀有關實例方法和靜態方法的信息。 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;    
}
}

或者您可以將反射僅用於更改;)

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

首先,您的方法具有一個“ int [] nums”屬性來調用需要為屬性設置值的方法。 注意,調用時不必為屬性指定相同的名稱。 例如:1- int[] Myattribute = {1,2,3}; int sum = computeSum(Myattribute ); int[] Myattribute = {1,2,3}; int sum = computeSum(Myattribute );

把這條線放在你主要的病

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM