Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NullPointerException,程序不';不编译_Java_Exception_Nullpointerexception - Fatal编程技术网

Java NullPointerException,程序不';不编译

Java NullPointerException,程序不';不编译,java,exception,nullpointerexception,Java,Exception,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; } 将此数组强制转换为字符串 public String toString() { Strin

我的节目有个问题:

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;
}
将此数组强制转换为字符串

public String toString() {
String result = "";
    for (int i=0;i<4;i++) {
      char convert = (char) farben[i];
      result+=convert;
    }
return result;
}
一开始它们必须是0

for (int i=0;i<4;i++) { 
检查我在同一位置是否有相同的元素

for (int o=i+1;o<4;i++) {      
如果相同位置的元素相同,计数器_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])
我不知道为什么,有人能帮我吗


谢谢

问题在于:

public class Muster2 {
int[] farben;
在这里:

public Muster2(int f0, int f1, int f2, int f3) {
int[] farben = new int[4];
您声明了两个完全独立的变量,它们都称为
farben


您填充了后者,让它超出范围。前者保持
null
,因此当您尝试访问其元素时会得到一个NPE。

如果您使用“o”作为循环计数器,则不应增加“i”:

for (int o=i+1;o<4;i++) {

for(into=i+1;oI我很困惑:您声明
“我的类中用于对象的Equal方法不起作用”
,但我没有看到
equals(…)
方法。你们甚至用德语来表示变量名!不管是什么情况,我当然不明白,我只有一个问题-为什么不在构造函数中传递一个数组,而不是用4个独立的整数参数来构造数组?你们在哪里定义了
Muster
?@HovercraftFullOf鳗鱼就在这里……What equals()/hashCode()我们在这里说的是什么?一旦你有了这个功能,你应该学习StringBuffer。避免在字符串上使用+=这个操作符,这在Java中是一个错误,这个操作符甚至存在。好的,这真的很有帮助,数组初始化了两次,循环计数器o@GyroGearlessJava中的字符串连接在相当长的一段时间内都不是这样虽然.compiler现在将+=转换为对StringBuilder的调用,例如,请参见此问题的答案:此外,这只是一个包含4个步骤的循环,因此性能不会受到影响,还不如使代码简短易读。但是现在我可以编译它,但它只会给出一个“而其他什么都没有。因此该方法现在可以工作,但是我不知道为什么它没有给出正确的东西。toString()方法应该可以工作,还是有错误?好的,我发现了错误。它在另一个类中,Bewertung.java的toString()方法不工作,我将在一个新线程中问这个问题。谢谢你的帮助!:)@rikojir我希望你的意思是你发现了另一个错误。因为不纠正这个错误(在这里的答案中)只会引起更多的问题。
public class Muster2 {
int[] farben;
public Muster2(int f0, int f1, int f2, int f3) {
int[] farben = new int[4];
for (int o=i+1;o<4;i++) {