问题在于方法“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]+" ");
}
}
答案 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行代码)