我有一個問題我的程序:NullPointerException異常,程序不編譯
public class Muster2 {
int[] farben;
構造帶的4個整數
public Muster2(int f0, int f1, int f2, int f3) {
int[] farben = new int[4];
farben[0] = f0;
farben[1] = f1;
farben[2] = f2;
farben[3] = f3;
}
數組施放這個數組爲String
public String toString() {
String result = "";
for (int i=0;i<4;i++) {
char convert = (char) farben[i];
result+=convert;
}
return result;
}
想法:起初,我想看看兩個陣列在 山姆有什麼相同的整數e位置:例如:[1,2,3,4]和[1,4,5,6]。對於 這兩個數組,counter_weiss應該是= 1,導致只有位置爲0的元素對於兩個數組都是相同的。 因此,counter_weiss統計兩個數組中的完全相同位置 中的元素。 counter_schwarz計算兩個數組中存在的元素,即 ,但在其他位置。所以counter_schwarz也是= 1,對於給定的數組, 原因在第一個我們有4個在第3個位置,在第二個數組我們可以在第二個位置找到 4。
public Bewertung bewerte(Muster versuch) {
int counter_schwarz = 0;
int counter_weiss = 0;
他們在第一
for (int i=0;i<4;i++) {
我通過陣列
if (this.farben[i] != versuch.farben[i]) {
運行和檢查,如果我得到了在相同的位置相同的元素爲0
for (int o=i+1;o<4;i++) {
如果不是,我檢查我是否有我t在另一個位置,但我必須在i + 1開始,否則當我到達數組末尾的索引像i = 3時,我會計數兩次。假設0,3是一個可能的組合,所以第一個數組的第一個元素與第三個數組中的第二個元素具有相同的數字,然後counter_schwarz將從0,3和3,0獲得+1。
if(this.farben[i] == versuch.farben[o]) {
counter_schwarz += 1;
}
}
}
else counter_weiss +=1;
}
如果在相同位置的元素是相同的,counter_white得+1
Bewertung aktuelleBewertung = new Bewertung (counter_schwarz, counter_weiss);
return aktuelleBewertung; /* here the counters are used to construct an object,
which doesn't matter now, this part should work fine */
}
public static void main (String[] args) {
Muster Muster1 = new Muster (1,2,3,4);
Muster Muster2 = new Muster (2,3,4,5);
Bewertung Neu = Muster1.bewerte(Muster2);
System.out.println(Neu.toString());
}
}
現在的問題是,我在
if (this.farben[i] != versuch.farben[i])
我不想得到一個NullPointerException」不知道爲什麼,有人能幫助我嗎?
感謝
我很困惑:你聲明'我的類的對象的等式方法不起作用',但我沒有在你的代碼中的任何地方看到'equals(...)'方法。 –
你們甚至用德語來表示變量名?! –
無論如何,我當然不明白,我只有一個問題 - 爲什麼不在你的構造函數中傳遞一個數組,而不是4個獨立的整數參數來構造一個數組? –