2017-10-14 45 views
-1

如何將此代碼簡化爲最簡單的形式而不重複?只需使用簡單的if/else語句,因爲這是我的編程入門級如何刪除這行代碼中的重複?

if (Character.toUpperCase(choosePassOverPed) == 'Y'){ 
     passengerPoints = passengerPoints + toughCallThresholdPoints; 
     if (passengerPoints > pedestrianPoints){ 
      System.out.println("Fatality Group: PEDESTRIANS"); 
      System.out.printf("Number of adult fatalities: %d%n", numAdultPedestrians); 
      System.out.printf("Number of child fatalities: %d%n", numChildPedestrians); 
     } 
     else{ 
      System.out.println("Fatality Group: OCCUPANTS"); 
      System.out.printf("Number of adult fatalities: %d%n", numAdultPassengers); 
      System.out.printf("Number of child fatalities: %d%n", numChildPassengers); 
     } 
    } 
    else{ 
     pedestrianPoints = pedestrianPoints + toughCallThresholdPoints; 
     if (passengerPoints > pedestrianPoints){ 
      System.out.println("Fatality Group: PEDESTRIANS"); 
      System.out.printf("Number of adult fatalities: %d%n", numAdultPedestrians); 
      System.out.printf("Number of child fatalities: %d%n", numChildPedestrians); 
     } 
     else{ 
      System.out.println("Fatality Group: OCCUPANTS"); 
      System.out.printf("Number of adult fatalities: %d%n", numAdultPassengers); 
      System.out.printf("Number of child fatalities: %d%n", numChildPassengers); 
+1

將兩個重複的打印函數放入其自己的方法中,並在需要時調用該方法。 – notyou

+1

查看** [CodeReview SE](https://codereview.stackexchange.com)**瞭解*現有工作代碼*的反饋/改進。 StackOverflow是*編程問題*。 – Toastrackenigma

回答

2

簡單。

使用一個一套printf,並設置您在if/else分支中填寫的變量。

在你的代碼示例中,ifs甚至沒有做任何事情,只是改變了打印的第一行。

2

只打印出if/else,這將爲您節省很多。
你也可以把內部if/else從外面的一個。

if (Character.toUpperCase(choosePassOverPed) == 'Y') { 
    passengerPoints = passengerPoints + toughCallThresholdPoints; 
else { 
    pedestrianPoints = pedestrianPoints + toughCallThresholdPoints;  
} 
if (passengerPoints > pedestrianPoints){ 
    System.out.println("Fatality Group: PEDESTRIANS"); 
} 
else { 
    System.out.println("Fatality Group: OCCUPANTS"); 
} 
System.out.printf("Number of adult fatalities: %d%n", numAdultPassengers); 
System.out.printf("Number of child fatalities: %d%n", numChildPassengers); 
0

我不會真的寫這樣的,但這擺脫重複的代碼:

public void method() { 
    // declare variables... 

    if (Character.toUpperCase(choosePassOverPed) == 'Y') { 
     passengerPoints = passengerPoints + toughCallThresholdPoints; 
     checkPoints(passengerPoints, pedestrianPoints, numAdultPedestrians, numChildPedestrians, numAdultPassengers, numChildPassengers); 
    } else { 
     pedestrianPoints = pedestrianPoints + toughCallThresholdPoints; 
     checkPoints(passengerPoints, pedestrianPoints, numAdultPedestrians, numChildPedestrians, numAdultPassengers, numChildPassengers); 
    } 
} 

private static void checkPoints(int passengerPoints, int pedestrianPoints, int numAdultPedestrians, int numChildPedestrians, int numAdultPassengers, int numChildPassengers) { 
    if (passengerPoints > pedestrianPoints) { 
     System.out.println("Fatality Group: PEDESTRIANS"); 
     log(numAdultPedestrians, numChildPedestrians); 
    } else { 
     System.out.println("Fatality Group: OCCUPANTS"); 
     log(numAdultPassengers, numChildPassengers); 
    } 
} 

private static void log(int numAdultPedestrians, int numChildPedestrians) { 
    System.out.printf("Number of adult fatalities: %d%n", numAdultPedestrians); 
    System.out.printf("Number of child fatalities: %d%n", numChildPedestrians); 
} 

我覺得裏面還有一些概念,可能進一步抽象,例如passengerPoints和行人點都表現出相同的方式,因此可能存在某種您需要的PersonPoints類。