简体   繁体   中英

How do I use this set method in a loop

This is a homework question so preferably I would like to write as much code as possible, just need a pointer.

I have a class called Sandwich that has a Method to set a main Ingredient and a few other things -

public class Sandwich {

private String mainIngredient, bread;


String getMainIngredient(){
    return mainIngredient;
    }

void setMainIngredient(String mainIng){
    mainIngredient = mainIng;
}

 void setBread(String dough){
    bread = dough;
}


 void setPrice(double cost){
    price = cost;
}

Now in another class TestSandwich I've initialized an Array, as part of the question;

Sandwich[] sandwiches = new Sandwich[5];

Now what I need to do is loop through and assign a value to mainIngredient and bread each time. I think I would want to do something along the lines of this but I'm not really sure how to do it correctly.

for(int i = 0; i < 5; i++){

        System.out.println("Insert a main ingredient");
        String userInput = sc.next();

        sandwiches[i].setBread(userInput);

        System.out.println("Insert a bread");
        userInput = sc.next();

        sandwiches[i].setMainIngredient(userInput);


        System.out.println(sandwiches[i].getMainIngredient());
        System.out.println("");

}

The main issue is - sandwiches[i].setMainIngredient(userInput); Im not really experienced with arrays and methods such as these so any help with the correct syntax would be great.

Thanks

Sandwich[] sandwiches = new Sandwich[5]; creates an array of 5 null references.

You need to initialise each element yourself; in your loop write

sandwiches[i] = new Sandwich();

else you'll get NullPointerException s. Once you've done that you can call the setting methods as you currently do. Going forward, you could declare a two argument constructor taking the bread and main ingredient as arguments. That's better style since (i) you avoid setters and (ii) the object being in an ill-defined state between construction and use.

 Sandwich[] sandwiches = new Sandwich[5]; 

This allocates an array to hold 5 sandwiches, but it doesn't create any sandwiches. Just the array. You're on the right track to create the sandwiches in a loop.

When you write this loop, instead of iterating until 5, it's better to use sandwiches.length , so that if you want 10 instead of 5 sandwiches, you can change the number in one place instead of 2. It will be safer and less error-prone:

for (int i = 0; i < sandwiches.length; ++i) {
    // TODO: get the ingredients from user

    // ready to create the sandwich, yum yum
    Sandwich sandwich = new Sandwich();
    sandwich.setBread("...");
    sandwich.setMainIngredient("...");
    sandwiches[i] = sandwich;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM