2013-09-29 2 views
1

다음 프로그램과 함께 isseue를 사용하고 있습니다.If Else 조건을 배열에 추가하십시오.

여기에 전체 코드가 있으며 최근에 프로그래밍을 배우기 시작했으며 이것이 내 첫 프로젝트이므로 들여 쓰기와 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 루프 실행을 시도 할 수 :, 당신은 모든 시간을 캐스팅 단지 필요가 없습니다 List<Car> carList : 또한 당신의 CarList 가정

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 */ 
    } 
} 

는 일반 자동차를 사용을 for-each 루프를 실행하십시오. for (Car c : carList)

+0

@Rouge 대단히 감사하지만 다른 문제가있는 것 같습니다. 끝에 else 문을 넣었을 때 System.out.println ("유효한 모델을 입력하십시오"); 배열에있는 값의 수만큼 위의 명령문을 인쇄합니다. – Ryan

+0

OP를 현재 사용중인 코드로 업데이트 할 수 있습니까? – Rogue

+0

프로그램을 업데이트 해 봤습니다. – Ryan

관련 문제