Now that is really difficult to read and follow. Start by breaking the
long lines; I have done most of them, so you can see how it is done. Also follow a common indentation convention. We have one
here, and there are others, but I have not seen indentation where the { is farther to the left than the line preceding it.
You told us there are problems about holding values. You didn't say which fields are going wrong. I can see a problem, however, and it has nothing to do with Scanners. You have used the keyword static liberally. As far as I am concerned, if you don't have a good explanation for using static, that is a mistake. If you set the static field in your Bread class to “wholemeal“, then is it “wholemeal“ for every sandwich you have. Imagine you went into the shop and asked for a rye sandwich and the next person asked for wholemeal. The girl behind the counter reaches for a wholemeal loaf and slices wholemeal bread for everybody irrespective of what they requested. You need the bread type to be different for each sandwich, and there should be a bread field for each sandwich.
So delete the keyword static everywhere except after public and before void main(
String[] args). See what happens like that.