有一些问题,为数组分配函数的返回值(这是一个数组)。
public static int[] calculeaza_P(int poli[], int n, int k, int p) {
int P[] = new int[n];
//calculam mesajul, P(0)....P(n-1) se obtin inlocuind in polinom cu valoare
for (int i = 0; i < n; i++) {
//initializare cu a0//elementul liber din polinom
P[i] = get_unsemnificative_coef(poli, 0);
//puterile i....i^k-1
for (int j = 1; j < k; j++) {
//P(x)=(a_1)*(i^1)+....(a_k-1)*(i^k-1)
P[i] = P[i] + get_unsemnificative_coef(poli, j) * (int) Math.pow(i, j);
}
//modulo p
P[i] = P[i] % p;
}
return P;
}
在我的主要方法中我有
public static void main(String[] args) {
int p = 7;// nr prim pe l biti, 2^l<=p<=2^(l-1)
int poli[] = new int[]{2, 3, 4};//a_k-1......a1,a0 numere <p
int k = poli.length;//lungimea sirului
int s = 1;//nr erori de corectat
int n = k + 2 * s;//nr de P(x), sau lungimea lui C'
System.out.println("Polinomul initial:" + print_poly(poli));
////////
//generarea P(x) si mesajului codificat
System.out.println("De la dreapta la stanga, P(x):");
int[] P = new int[n];
P= calculeaza_P(poli[], n, k, p);
for (int i = 0; i < P.length; i++) {
System.out.print("P(" + i + ")=" + P[i] + " ");
}
System.out.println();
System.out.println();
// System.out.println("Mesaj initial corect: " + mesaj);
//schimb 1 bit
int poz = 2;
//int mesajgresit = S_SchimbaBit(mesaj, poz);
//System.out.println("Mesaj primit eronat: " + mesajgresit);
System.out.println();
}
它告诉我.class当我尝试为P赋值函数时。我做错了什么?
答案 0 :(得分:3)
int[] P = new int[n];
答案 1 :(得分:1)
对calculeaza_P
的调用包含语法错误,应为
P= calculeaza_P(poli, n, k, p);
而不是
P= calculeaza_P(poli[], n, k, p);
另请注意,P
的初始化是无用的,因为变量会在之后直接被calculeaza_P
的结果覆盖。