Logic
Logic

Reputation: 41

Using arrays with objects? Java

I am new to Java and am wondering whats wrong with the code below. I am trying to create multiple objects as an array if this is possible? The code will run and ask for a name, however just end after this and im not sure why. Any help would be great, thanks in advance.

import java.util.Scanner;


public class test {
	
    public static void main(String[] args) {
    	
    	
    	ABug[] BugObj = new ABug[3]; //Creating object BugObj of class ABug
    			
    	
    	
    	for (int i=1; i<4; i++){
    	Scanner reader = new Scanner(System.in);	
        System.out.println("Please enter the name of the bug:");
		BugObj[i].name = reader.next();
    	System.out.println("Please enter the species of the bug:");
    	BugObj[i].species = reader.next();
    		
    
    	System.out.println("Name: " + BugObj[i].name);           //Printing bug information out
    	System.out.println("Species: " + BugObj[i].species);
    	
    	}		
    }   
}

class ABug {
	int horpos, vertpos, energy, id;
	char symbol;
	String species, name;
	
}

Upvotes: 1

Views: 137

Answers (3)

user4695271
user4695271

Reputation:

You have two issues:

  • You need to have an instance of the object you are going to use.
  • The way to manage a for loop.

You can modify your source code to this:

Scanner reader = new Scanner(System.in); // Take out this from inside for loop

for (int i = 0; i < BugObj.length; i++) { // Notice we use BugObj.length instead of a number and start index at 0.
  System.out.println("Please enter the name of the bug:");
  BugObj[i] = new ABug(); // You need to initialize the instance before use it
  BugObj[i].name = reader.next();

Upvotes: 1

Aroniaina
Aroniaina

Reputation: 1252

Two errors :

  • initialize object before use : you cannot write BugObj[i].name before writing this BugObj[i] = new ABug();
  • array bounds, Java array begin at [0] but not [1], so use for (int i=0; i<3; i++) instead of for (int i=1; i<4; i++)

The final code :

public class test {
    public static void main(String[] args) {
        ABug[] BugObj = new ABug[3];        
        for (int i=0; i<3; i++){
            Scanner reader = new Scanner(System.in);
            BugObj[i] = new ABug();
            System.out.println("Please enter the name of the bug:");
            BugObj[i].name = reader.next();
            System.out.println("Please enter the species of the bug:");
            BugObj[i].species = reader.next();
            System.out.println("Name: " + BugObj[i].name);           //Printing bug information out
            System.out.println("Species: " + BugObj[i].species);
        }       
    }
}
class ABug {
    int horpos, vertpos, energy, id;
    char symbol;
    String species, name;   
}

Upvotes: 0

MikeCAT
MikeCAT

Reputation: 75062

You have to create objects to store the data first.

import java.util.Scanner;


public class test {

    public static void main(String[] args) {


        ABug[] BugObj = new ABug[3]; //Creating object BugObj of class ABug



        for (int i=1; i<4; i++){
            BugObj[i] = new ABug(); // add this line
            Scanner reader = new Scanner(System.in);
            System.out.println("Please enter the name of the bug:");
            BugObj[i].name = reader.next();
            System.out.println("Please enter the species of the bug:");
            BugObj[i].species = reader.next();


            System.out.println("Name: " + BugObj[i].name);           //Printing bug information out
            System.out.println("Species: " + BugObj[i].species);

        }
    }
}

class ABug {
    int horpos, vertpos, energy, id;
    char symbol;
    String species, name;

}

Upvotes: 0

Related Questions