0

我创建了一种打印文件的方法,但是它只传递真实值而不是.dat文件中的实际值。请你看看我的方法并告诉我我做错了什么吗?非常感谢。

调用打印方法:

System.out.println(printColumnHeaders(vehicles[x], false, false));

我的打印方法:

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; 
    }

该方法假设检查 isFirst 布尔值是否为真且 printFull 布尔值为真,然后调用车辆的 printFullHeadings 方法,否则如果 isFirst 布尔值最后为真,则调用车辆的 printSummaryHeadings 方法

4

3 回答 3

1

如前所述,由于您传入的是 false,因此 false 您的方法不会打印。但是你似乎也有一个逻辑问题,因为你的静态方法总是返回一个布尔值,你正在传递给 System.out.println。您可以尝试以下方法:

if ( printColumnHeaders(System.out, vehicles[x], false, false) == false)
... handle print error

您的打印方法是:

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; 
}

这允许您的方法输出到不仅仅是标准输出。

于 2012-11-25T18:31:27.793 回答
0
System.out.println(printColumnHeaders(vehicles[x], false, false));

您将 false、false 传递给 printColumnHeaders 方法,这只会导致它终止并返回 false,它通过调用 System.out.println() 来打印。

如果您调用一个方法作为 println() 的参数,它将打印该方法的返回值,而不是您希望在该方法中打印的任何内容。

于 2012-11-25T06:08:44.863 回答
0

这是我修复它的方法:

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());
                    }

印刷方式:

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;
        }
于 2012-11-28T20:49:35.287 回答