我收到一個NullPointerException錯誤,不能找出原因。我已經包括了所有我正在研究的三個類,並且////注意日食在哪裏說錯誤來自主方法(顯然有兩個位置)。Noob空指針異常錯誤
我是新來的編碼,從我理解這種情況發生時,當你試圖傳遞被認爲是空的東西,但我相信我試圖從代碼中傳遞新創建的魚。我相信這個錯誤很容易被有經驗的人看到。
謝謝!
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;
}
}
在哪一行你正在得到一個空指針異常? – Prudhvi
堆棧跟蹤在哪裏?錯誤發生在哪裏,代碼的哪一行?錯誤在什麼情況下發生? – MadProgrammer