2013-09-29 34 views
1

我正在使用以下程序的isseue。將其他條件添加到數組中

這裏是整個代碼,也是我最近開始學習編程,這是我的第一個項目,所以我不擅長縮進和OOP概念。如果你們中的一位專家可以把這個程序變成OOP,那對我來說是一個很大的幫助。

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.*; 


class Car { 
    private String make; 
    private String model; 
    private String regNo; 
    private int deposit; 
    private int rate; 

    public Car(String newMake, String newModel, String newRegNo,int newDeposit, int newRate) 
    { 
      make = newMake; 
      model = newModel; 
      regNo = newRegNo; 
      deposit = newDeposit; 
      rate = newRate; 
    } 



    public String getMake() { 
      return make; 
    } 

    public String getModel() { 
      return model; 
    } 

    public String getRegNo() { 
      return regNo; 
    } 

    public int getDeposit() { 
      return deposit; 
    } 

    public int getRate() { 
      return rate; 
    } 
} 

public class carrenta { 

public static void main(String[] args) { 
    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yy HH:mm"); 
    Date date = new Date(); 
    System.out.println(dateFormat.format(date)); 

List<Car> carlist = new ArrayList(); 
carlist.add(new Car("Toyota", "corolla", "TA7896", 1500, 1800)); 
carlist.add(new Car("Toyota", "vitz", "TV9872", 1500, 1800)); 
carlist.add(new Car("Nissan", "paso", "NP1543", 1500, 1500)); 
carlist.add(new Car("Honda", "city", "HC4692", 1800, 1800)); 
carlist.add(new Car("Honda", "civic", "HC4521", 2000, 1600)); 
carlist.add(new Car("Honda", " accord", "HA5463", 2500, 2000)); 
carlist.add(new Car("Mitsubishi", "lancer", "ML4521", 2000, 1500)); 


      Scanner input = new Scanner(System.in); 
      boolean modelFound = false; 
      while (!modelFound) { 
      System.out.print("Enter model to rent: "); 
      String model = input.nextLine(); 

      for(Car s : carlist){ 
     if (model.equalsIgnoreCase(s.getModel())) { 
     modelFound = true; 
     System.out.println("Model " + model + " is available"); 
     System.out.print("Enter number of days: "); 
     int days = input.nextInt(); 
         System.out.println("***************Details*****************"); 
     int cost = (days * s.getRate()) + s.getDeposit(); 
     System.out.println("Deposit DailyRate Duration TotalCost"); 
     System.out.println(s.getDeposit() + "  " + s.getRate()+ "   " + days + "  " + cost); 
     System.out.print("Proceed to rent?(y/n): "); 

     String dec = input.next(); 
     switch (dec) { 
      case "y": 
       System.out.println("Enter Customer Name: "); 
       String name = input.next(); 
       System.out.println("Enter NIC Number: "); 
       int num = input.nextInt(); 
       System.out.println("************Receipt*************"); 
       System.out.println( "  Date        Name   NICNo   Car  RegNo Duration TCost"); 
      System.out.println(date+"   "+name + "   " + num + "   " + model 
       + " " + s.getRegNo() + "  " + days + "  "+cost); 
       break; 
      case "n": 
       System.out.println("Serving Next Customer: "); 
       break; 
       } 
    } 
     else{ 
       System.out.println("Please enter a valid model"); 
     } 
     } 
    } 
} 

}

+0

你的代碼組織得不是很好,所以很難說出什麼地方。請添加正確的縮進量,以便我們可以輕鬆找出環路和條件機構。 – hexafraction

+0

然後在你的問題塊周圍添加一個'loop' –

+0

你已經編寫了這個程序,好像你在BASIC中寫的一樣。擁抱更多面向對象的範例。通過使用對象,您的代碼不僅更具可讀性,而且您的程序將更容易維護和擴展。 – scottb

回答

1

你可以嘗試運行一個while循環:

boolean modelFound = false; 
while (!modelFound) { 
    // Ask question, take input 
    String model = input.next(); 
    for (Object object : carList) { 
    /* etc ... */ 
    if (model.equalsIgnoreCase(car.getModel()) { 
     modelFound = true; 
     /* other code */ 
    } 
} 

而且假設你的卡洛斯使用通用的一輛車:List<Car> carList,那麼你就需要轉換每一次,只是運行你的for-each循環作爲for (Car c : carList)

+0

@Rouge Thankyou非常有效,但似乎有另一個問題。當我把一個else語句放到最後,這是 System.out.println(「請輸入一個有效的模型」); 它將上面的語句按照數組中的值數量打印多次。 – Ryan

+0

您可以使用當前正在使用的代碼更新OP嗎? – Rogue

+0

我已經更新了程序請看看。 – Ryan

相關問題