Dani
Dani

Reputation: 71

please help me to Call a printing Method

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

Answers (3)

Dani
Dani

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

BradRees
BradRees

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

Jordan Bentley
Jordan Bentley

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

Related Questions