-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))){

第二个“studentId”拼写错误,应该是“studentID”

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

当然,除非您碰巧为您的 studentID 类定义了两个数组,每个数组都有不同的大小写。

我也同意与“==”比较运算符相关的其他答案,但您告诉我们错误与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

虽然循环?好的。调试是通过简化表达式来完成的。

我们唯一看到的 < 是循环条件。代替

  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){

如果再次出错,请简化引发错误的表达式。

我认为这个问题是错误的。它是* * 模棱两可的,只是因为您没有尝试对其进行本地化。仅当“<”不适用于两个整数时才发布问题。当前的问题标题必须是:“你如何调试 Java 程序?”

于 2013-01-17T20:28:48.260 回答