-1
public static int intersectionSizeMergeAndSort(studentList L1, studentList L2) {

  int intersectionSize = 0;
  int[] C = new int[L1.studentID.length+L2.studentID.length];
  for(int i = 0; i<L1.studentID.length; i++){
  C[i] = L1.studentID[i];
  }
  for(int i = 0; i<L2.studentID.length; i++){
  C[i+L1.studentID.length] = L2.studentID[i];
  }
  Arrays.sort(C);
  int pointer = 0;
  while(pointer<((L1.studentID.length)+(L2.studentId.length))){
    if(C[pointer] = C[pointer+1]){
    intersectionSize = intersectionSize + 1;
    pointer = pointer + 2;
    }
    else {
      pointer == pointer + 1;
  }
return intersectionSize;
  }
}

私は割り当てのために書いているこのアルゴリズムを持っています。コードをコンパイルするたびに、デバッグするために理解できないエラーが発生します。エラーは次のとおりです。

Error: /Users/nah/Desktop/studentList.java:137: operator < cannot be applied to int,<nulltype>

エラーはwhileループステートメントを指しています

4

4 に答える 4

4

これが同じエラーに直接関連しているかどうかはわかりませんが、あなたの行

 while(pointer<((L1.studentID.length)+(L2.studentId.length))){

2 番目の「studentId」のスペルが間違っています。「studentID」にする必要があります

 while(pointer<((L1.studentID.length)+(L2.studentID.length))){

もちろん、studentID クラスに大文字と小文字が異なる 2 つの配列が定義されている場合を除きます。

while「==」比較演算子に関連する他の回答にも同意しますが、エラーはステートメントに関連していると言っています

于 2013-01-17T20:24:33.020 に答える
1

私が見ることができる唯一のエラーは次のとおりです。

if(C[pointer] = C[pointer+1]){

これは次のようになります。

if(C[pointer] == C[pointer+1]){
于 2013-01-17T20:15:16.323 に答える
0

以下は Java では機能しません。

if (C[pointer] = C[pointer+1])

これは割り当てです。型は int です。if ステートメントでは使用できません。

于 2013-01-17T20:16:44.443 に答える
0

ループ中?Ok。デバッグは、式を単純化することによって行われます。

< が表示される唯一のものは、ループ条件です。それ以外の

  int pointer = 0;
  while(pointer<((L1.studentID.length)+(L2.studentId.length))){

行う

  int pointer = 0;
  int len = ((L1.studentID.length)+(L2.studentId.length));
  while(pointer< len){

エラーが再び発生した場合は、エラーを発生させる式を単純化します。

この質問のタイトルは間違っていると思います。* * あいまいなのは、ローカライズしようとしないからです。「<」が 2 つの整数に対して機能しない場合にのみ、質問を投稿してください。現在の質問のタイトルは、「Java プログラムをどのようにデバッグしますか?」にする必要があります。

于 2013-01-17T20:28:48.260 に答える