[英]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;
}
}
或者您可以將反射僅用於更改;)
首先,您的方法具有一個“ 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.