2013-09-29 6 views
1

Je suis en train d'avoir une isseue avec le programme suivant.Ajouter If Else condition à un tableau

Voici le code entier et aussi j'ai récemment commencé à apprendre la programmation et ceci est mon premier projet donc je ne suis pas si bon à l'indentation et le concept de POO. Si un de vos experts peut transformer ce programme en POO, cela me sera d'une grande aide.

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

Votre code n'est pas très bien organisé, il est donc difficile de dire ce qui est où. S'il vous plaît ajouter une indentation correcte afin que nous puissions facilement repérer les corps de boucle et de condition. – hexafraction

+0

puis ajoutez une 'boucle' autour de votre bloc de questions –

+0

Vous avez écrit ce programme comme si vous l'écriviez en BASIC. Embrasser un paradigme plus orienté objet. En utilisant des objets, non seulement votre code sera plus lisible, mais votre programme sera beaucoup plus facile à maintenir et à étendre. – scottb

Répondre

1

Vous pouvez essayer d'exécuter une boucle 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 */ 
    } 
} 

en supposant également votre carliste utilise un générique Voiture: List<Car> carList, alors vous n'avez pas besoin de jeter chaque fois, juste exécutez votre boucle for-each comme for (Car c : carList)

+0

@Rouge Merci beaucoup cela a fonctionné mais il semble y avoir un autre problème. Quand je mets une instruction else à la fin qui est System.out.println ("Veuillez entrer un modèle valide"); il imprime l'instruction ci-dessus autant de fois que le nombre de valeurs dans le tableau. – Ryan

+0

Pouvez-vous mettre à jour l'OP avec le code actuellement utilisé? – Rogue

+0

J'ai mis à jour le programme s'il vous plaît jeter un oeil. – Ryan

Questions connexes