Reputation: 71
I have created a method to print my files, however it only passes the true value instead of my actual values from the .dat file. Will you take a look at my method and tell what i'm doing wrong, please? Thank you so much.
calls the printing method:
System.out.println(printColumnHeaders(vehicles[x], false, false));
My Printing method:
private static boolean printColumnHeaders(Vehicle vehicle,boolean isFirst,boolean printFull ) {
if(isFirst && printFull) {
System.out.println(vehicle.printFullHeadings());
isFirst = true;
printFull = true;
}
else if(isFirst){
System.out.println(vehicle.printSummaryHeadings());
isFirst = true;
}
return false;
}
this method suppose to check If isFirst boolean value is true and printFull boolean value is true then, Call the vehicle’s printFullHeadings method next, Else if isFirst boolean value is true last, Call the vehicle’s printSummaryHeadings method
Upvotes: 0
Views: 145
Reputation: 71
here is how I fixed it:
private static void displayVehicleData(String displayType) {
boolean isFirst = true;
for(int x = 0; x < vehicles.length; x++){
switch(displayType) {
case "Vehicles" : // List All Vehicles
isFirst = printColumnHeaders(vehicles[x], false, isFirst);
System.out.println(vehicles[x].printSummaryOutput());
break;
case "Cars": // List All Cars
if(vehicles[x].getVehicleType().equals("American Car") ||
vehicles[x].getVehicleType().equals("Foreign Car")) {
isFirst = printColumnHeaders(vehicles[x], false, isFirst);
System.out.println(vehicles[x].printSummaryOutput());
}
Printing method:
private static boolean printColumnHeaders(Vehicle vehicle, boolean printFull, boolean isFirst) {
if(isFirst && printFull){
System.out.println(vehicle.printFullHeadings());
}
else if (isFirst){
System.out.println(vehicle.printSummaryHeadings());
}
return false;
}
Upvotes: 0
Reputation: 116
As mentioned, since you are passing in false, false your method isn't printing. But you also seem to have a logic problem since your static method always returns a boolean which your are passing into System.out.println. You might try something like:
if ( printColumnHeaders(System.out, vehicles[x], false, false) == false)
... handle print error
Your print method is then:
private static boolean printColumnHeaders(java.io.PrintStream writer, Vehicle vehicle,boolean isFirst,boolean printFull ) {
if(isFirst && printFull) {
writer.println(vehicle.printFullHeadings());
isFirst = true;
printFull = true;
}
else if(isFirst){
writer.println(vehicle.printSummaryHeadings());
isFirst = true;
}
return false;
}
This allows your method to output to more than just standard out.
Upvotes: 1
Reputation: 1309
System.out.println(printColumnHeaders(vehicles[x], false, false));
You're passing false, false into the printColumnHeaders method which just causes it to terminate and return false, which gets printed by the call to System.out.println().
If you call a method as an argument to println() it will print the return value of that method, not whatever you expected to be printed inside that method.
Upvotes: 0