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ブール値がtrueでprintFullブール値がtrueの場合、次に車両のprintFullHeadingsメソッドを呼び出し、isFirstブール値が最後にtrueの場合、車両の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 に答える