繁体   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