I'm getting an NullPointerException error and cant figure out why. I've included all three classes which I'm working on and made ////note where eclipse is saying the error is coming from in the main method (two locations apparently).
I'm new to coding and from what I understand this happens when you are trying to pass something that is considered null, but I believe I'm trying to pass the newly created fish from earlier in the code. I'm sure the error is very easily caught by someone with an experienced eye.
Thank you!
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;
}
}