2013-09-29 4 views
1

У меня есть isseue со следующей программой.Add If Else condition для массива

Вот и весь код, а также я недавно начал изучать программирование, и это мой первый проект, поэтому я не настолько хорош в отступе и концепции ООП. Если один из ваших экспертов может превратить эту программу в ООП, это будет большой помощью для меня.

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

затем добавьте 'цикл' вокруг вашего вопросника –

+0

Вы написали эту программу, как если бы вы ее записывали в BASIC. Объявите более объектно-ориентированную парадигму. Используя объекты, ваш код будет не только более читабельным, но ваша программа будет намного проще поддерживать и расширять. – scottb

ответ

1

Вы можете попробовать запустить время цикла:

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 Спасибо, что это сработало, но, похоже, есть еще одна проблема. Когда я положил в конец оператор else, который является System.out.println («Пожалуйста, введите действительную модель»); печатает вышеуказанный оператор столько раз, сколько числа в массиве. – Ryan

+0

Можете ли вы обновить OP с помощью кода, который в настоящее время используется? – Rogue

+0

Я обновил программу, пожалуйста, посмотрите. – Ryan