找不到符号(方法),不同类/文件中的相同代码,1个编译,1个dooesn&t; t

时间:2015-01-09 17:32:03

标签: java

问题在于方法“calculusRank”。如果我删除该方法及其相关部分,应用程序将起作用,如果我创建一个具有相同代码的不同记事本(与该方法相关的方法和主要代码),它就可以工作。 另外我想说我是初学者,这是我的第一个“相对”大型应用程序。

这是有问题但无法编译的代码:

import java.util.Random;
import java.lang.Math;

public class MultilevelSystem1 {

 static String[][] createMembers (int a) {
  Random nr = new Random ();
  String[][] membersName = new String [a][2];

  for(int j=0; j<2;j++)
   for(int i=0; i<a; i++) {
    if(j==0||i==0) membersName[i][j]="Nume"+(i+1);
    else membersName[i][j]="Nume"+(nr.nextInt(i)+1);
    }
  return membersName;
 }

 static String[][] createIncomes (String[][] a,int b){ 
  Random nr = new Random ();
  String[][] incomes = new String [b][2];
  int j=0;
  for(int i=0;i<a.length && j<b;i++) 
   if(nr.nextInt(2)==1){ incomes[j][0]= a[i][0];
                         incomes[j][1]=Integer.toString((nr.nextInt(10)+1)*50);
                         j++;}
  return incomes;
 }

 static class Members extends MultilevelSystem1 {
  double capital;
  String name;
  int rank;
  String superior;
  int ID;

  int calculateRank (int r, Members[] membersArray) {
   if(this.superior!=null)
    for(int i=0;i<membersArray.length;i++)
     if((this.superior).equals(membersArray[i].name)){r=membersArray[i].calculateRank(r,membersArray);
                                                      r++;
                                                      break;}
   return r;
  }

  static int[] calculate (int[] a, int[] b) {
   int[] c= new int [a.length];
   for (int i=0; i<a.length; i++)
    c[i]=a[i]+b[i];
   return c;
  }

 }


 public static void main(String[] args) {

  final int n = 30;
  final int m = 10;
  int[] a={1,2,3,4,5};
  int[] b={1,2,3,4,5};

  int[] c= calculate(a,b);
  for(int i=0;i<c.length;i++)
   System.out.print(c[i]+" ");


  String[][] entryDataMembers = createMembers(n);
  String[][] entryDataIncomes = createIncomes(entryDataMembers,m);

  Members[] membersArray = new Members[n];

  for (int i=0; i<n; i++) {
   membersArray[i]=new Members();
   membersArray[i].name = entryDataMembers[i][0];
   if(i!=0) membersArray[i].superior= entryDataMembers[i][1];
   else membersArray[0].superior= null;
  }


  for (int i=0; i<n; i++) 
   membersArray[i].rank = membersArray[i].calculateRank(1,membersArray);

 }
}

这项工作:

public class test {

 static int[] calculate(int[] a, int[] b) {
  int[] c= new int [a.length];
  for (int i=0; i<a.length; i++)
   c[i]=a[i]+b[i];
  return c;
 }


 public static void main (String[]args) {
  int[] a={1,2,3,4,5};
  int[] b={1,2,3,4,5};

  int[] c= calculate(a,b);
  for(int i=0;i<c.length;i++)
   System.out.print(c[i]+" ");
 }
}

2 个答案:

答案 0 :(得分:2)

int[] c = Members.calculate(a,b);

在您的代码中,calculate(a,b)方法存在编译问题,此方法存在于Members类中。 calculate(a,b)static方法,因此您可以使用Members类调用此方法。

答案 1 :(得分:1)

编译器找不到的方法是“计算”。

使用

    int[] c= Members.calculate(a,b);

访问成员类的静态方法。 (主方法内约62行代码)