Quote:
i want the user to enter two strings so that the second constructor would run and if they enter nothing the default constructor would run
String x = in.nextLine();
String y = in.nextLine();
BloodData bd = new BloodData(x, y);
bd = new BloodData();
bd.display();
Based on your requirement, above code does nothing of sorts. You have no logic to check if strings were entered or not. Instead, you use same variable to define the BloodData object. Default without parameters being the last call. So, display does the hardcoded O+ve always irrespective of what you enter or not.
It's not case of constructor chaining. It's simple logic problem and your constructors would be called as expected. You seem to be missing a key aspect of programming - usage of DEBUGGER. Using it in the IDE, it will help you understand every line and how it gets executed.
For learning on debugging:
jdb - The Java Debugger[
^]
Debugging the Eclipse IDE for Java Developers | The Eclipse Foundation[
^]