2013-01-17 108 views
-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; 
    } 
} 

我有這個算法我寫作業。每次我編譯我的代碼時,我都會遇到一個我無法理解的錯誤,以便進行調試。 錯誤如下:模糊java錯誤

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

錯誤指向while循環語句

+4

首先,您必須瞭解我們沒有行號才能看到。其次,通過操作數聲明只能看到失敗的操作。我們不會審查應用程序的代碼。 – Val

+0

@cklab:家庭作業標籤已被棄用。 – nhahtdh

+0

'L1.studentID'和'L2.studentID'的類型是什麼? – NPE

回答

1

我能看到的唯一錯誤是:

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

這應該是:

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

是這個我修好了 – Ralph

+2

@ user1804697請發佈您的更新代碼 –

+0

那麼,與operator RGO

0

以下在Java中不起作用:

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

這是分配,它的類型是int,它不能在使用的if語句

+0

它可以,它只是沒有太大的好處。 – iamnotmaynard

+0

@iamnotmaynard此代碼僅在C是布爾(或布爾)數組時纔有效,但在問題中它是int數組。這段代碼不會用Java編譯。在C/C++中它會,但不是在Java中。 –

+0

啊,你是對的。 – iamnotmaynard

4

不知道這是直接關係到同樣的錯誤,但你行

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

有誤-spelt第二個「studentId」,應該是「studentID」

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

那是當然的,除非你碰巧有您studentID CLA定義兩個數組ss,每個都有不同的情況。

我也同意有關「==」比較操作其他的答案,但你告訴我們的錯誤是關係到while聲明

+0

就是這樣,我敢打賭... – iamnotmaynard

+0

雖然不會拋出一個不同的錯誤?甚至在它之前呢? – iamnotmaynard

0

While循環?好。調試通過簡化表達式來完成。

我們看到<的唯一情況就是循環條件。取而代之的

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程序?」