簡體   English   中英

從void Java調用靜態方法時出錯

[英]error on calling static method from void java

在從主類調用方法時需要幫助。

我需要調用一個方法,因此我創建了一個對象來處理它。
下面我引用我的主要方法

 public static void main(String[] args) {
        // TODO code application logic here
        SLRatio sl= new SLRatio();
        sl.clustering(apa);
}  

這是我需要調用的方法

public class SLRatio {

public static String [][]clustering(String[][]apa) {

   System.out.println("Cluster 1");

   int a = apa.length/3;
   String [][] cluster1=new String [a][apa[0].length];

   for (int i =0; i<a; i++) {
      for (int j=0;j<apa[0].length;j++) {
         cluster1 [i][j] = apa[i][j];
      }
   }

   for (int b = 0; b < cluster1.length; b++) {
      for (int c = 0; c < cluster1[0].length; c++) {
         System.out.print(cluster1[b][c] + "\t");
       }

       System.out.println("");        
   }

   System.out.println("\n");

   return cluster1;

}
}

我收到錯誤消息:“找不到符號,正在訪問靜態方法集群”

我該怎么解決? 我試圖更改語法,但是沒有用。
非常感謝。

您沒有在SLRatio定義方法Allocation()

注意:應使用類名調用靜態方法(以避免實例方法與靜態方法之間的沖突)

如果它是靜態方法,則無需通過實例調用它。

SLRatio .clustering(...);

應該足夠了。

看來您忘記了實施Allocation方法。

另一個建議是Java命名約定,方法名稱以小寫字母開頭。

除非確定合適,否則不要使用static

這是一個流行的編程錯誤,部分原因是eclipse一直建議在無法訪問變量和方法時使它們變為static 但是通常,這不是正確的解決方案。 它解決了編譯問題,但通常會破壞應用程序邏輯。

現在,您的問題可能是apa具有String[][]類型,但是您正在向其傳遞String[]參數。 由於沒有方法clustering(String[] args) ,因此無法編譯。

認真地說,您需要學習更多Java基礎知識。 也許是一本書

暫無
暫無

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

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