[英]Why this basic java programme is not compiling
編譯此程序時出現錯誤:
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)
然后,將您的Add5
方法Add5
靜態:
public static void Add5(int x[]){
for(int counter=0; counter < x.length; counter++){
x[counter]+=5;
}
}
基本上,這意味着只能從靜態方法中調用靜態方法,而Java中的main
方法是靜態的。
編輯:為什么你必須這樣做? 因為類的靜態成員不存在類的實例,所以非靜態成員不存在。 如果您在未創建試圖調用非靜態方法的類實例(有效)的情況下調用靜態方法,則該方法將無效,因為沒有類的實例就不會存在非靜態方法。
靜態方法和變量在類級別,可以使用類名的引用來調用,而非靜態方法在對象級,可以使用類的對象來調用。
您可以做兩件事。
將方法更改為靜態
類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; } }
}
創建類的對象,然后使用該對象調用類的方法。
類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; } }
}
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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.