我收到NullPointerException错误,无法找出原因。我已经包含了我正在处理的所有三个类并且// //注意eclipse在哪里说错误来自主方法(显然是两个位置)。
我是编码的新手,根据我的理解,当你试图传递一些被认为是null的东西时会发生这种情况,但我相信我正试图从代码中的早期传递新创建的鱼。我确信这个错误很容易被有经验的人抓住。
谢谢!
import java.util.Scanner;
public class FishTankManager {
private static Scanner stdin = new Scanner(System.in);
private static int userInput, userInput2;
private static FishTank[] tanks = new FishTank[10];
public static void main (String[] args) {
while (true){
System.out.println("Welcome to your new fish tank manager!\n"+
"What would you like to do?\n"+
"(1)Add a Fish\n(2)Remove a Fish\n"+
"(3)Check a tank");
userInput = stdin.nextInt();
if (userInput == 1){
Fish fish = new Fish();
changeTank(fish); //// Says its at here
continue;
}
else if(userInput ==2){
removeFish();
}
else{
checkTank();
}
}
}
private static void changeTank(Fish fish){
System.out.println("Which tank would you like to put this fish in? (1-10)");
userInput = stdin.nextInt();
tanks[userInput-1].addFish(fish); ////and says its at here also
}
private static void removeFish(){
System.out.println("Which tank would you like to remove the fish from? (1-10)");
userInput = stdin.nextInt();
System.out.println("Which fish would you like to flush down the toilet?");
tanks[userInput-1].fishInTank();
userInput2 = stdin.nextInt();
tanks[userInput-1].flushFish(userInput2-1);
}
private static void checkTank(){
System.out.println("Which tank would you like to check?");
userInput = stdin.nextInt();
tanks[userInput-1].fishInTank();
}
}
public class FishTank {
private Fish[] tank;
private int fishCount = 0;
public FishTank(){
this.tank = new Fish[5];
this.fishCount = 0;
}
public void addFish(Fish fish){
if (this.fishCount >=5 ){
System.out.println("This tank is full! Try another");
return;
}
else {
this.tank[fishCount] = fish;
this.fishCount++;
}
}
public void fishInTank(){
for(int i=0; i<5; i++)
if (this.tank[i] == null){
continue;
}
else{
System.out.println("("+(i+1)+")"+this.tank[1].getName());
}
}
public void flushFish(int f){
this.tank[f] = null;
}
}
import java.util.Scanner;
public class Fish {
private static Scanner stdin = new Scanner(System.in);
private String userInput;
private int userInput2;
private boolean mean;
private String name;
public Fish(){
System.out.println("What is your fishes name?");
userInput = stdin.next();
this.name = userInput;
System.out.println("Is this fish aggressive?\n"+
"(1)Yes\n(2)No");
userInput2 = stdin.nextInt();
if (userInput2 == 1)
this.mean = true;
else
this.mean = false;
}
public String getName(){
return this.name;
}
public boolean getMean(){
return this.mean;
}
}
答案 0 :(得分:1)
tanks
仅作为数组创建,但不创建任何FishTank
。因此,tanks
中的所有元素都是null
。所以:tanks[userInput-1].addFish(fish);
无法工作,因为tanks[userInput - 1]
是null
。对于位置:stacktrace告诉您所有方法,直到导致异常的方法。所以&#34;它发生在这里&#34;和#34;也在这里&#34;实际上是#34;这个方法调用这个方法,在这里抛出异常&#34;和#34;在这种方法中抛出异常&#34;