Метод «Get» и задача для конструкторов в Java - PullRequest
1 голос
/ 25 апреля 2020

Код должен получить необходимые спальни, ванные комнаты и арендную плату от пользователя и показать ему квартиры, которые соответствуют его потребностям. Код работает, но он задает вопросы 5 раз, а не только один раз, и просто дает информацию для каждой квартиры в данный момент. Например, если я хочу квартиру с 3 спальнями, 2 ванными комнатами и арендной платой 300, она просто спросит снова во второй раз, не показывая мне сообщение об ошибке "Номер квартиры" + aptNumber + "не подходит для ваших нужд . "

Я просто хочу, чтобы это работало один раз, спрашивая один раз и давая список каждой подходящей квартиры. Если у кого-то есть идеи, пожалуйста, помогите!

import java.util.Scanner;

public class Apartment
{
   private int aptNumber;
   private int bedrooms;
   private int baths;
   private double rent;

   public int getAptNumber()
   {
       return aptNumber;
   }

   public int getBedrooms()
   {
       return bedrooms;
   }

   public int getBaths()
   {
       return baths;
   }

   public double getRent()
   {
       return rent;
   }

   public Apartment(int num, int bed, int bath, double ren)
   {
       aptNumber = num;
       bedrooms = bed;
       baths = bath;
       rent = ren;
   }

   public Apartment(int num, int bed, int bath)
   {
       this(num, bed, bath, 300);
   }

   public Apartment(int num, int bed)
   {
       this(num, bed, 2);
   }

   public Apartment(int num)
   {
       this(num, 2);
   }

   public void display()
   {
       int minbeds;
       int minbaths;
       double maxrent;

       Scanner input = new Scanner(System.in);
       System.out.print("Please enter: least amount of bedrooms >> ");
       minbeds = input.nextInt();
       System.out.print("Please enter: least amount of bathrooms >> ");
       minbaths = input.nextInt();
       System.out.print("Please enter: maximum amount of rent >> ");
       maxrent = input.nextDouble();

       if(minbeds <= bedrooms) {
           if(minbaths <= baths) {
               if(maxrent >= rent) {
                   System.out.println("Apartment number " + aptNumber + " has " + bedrooms + 
                                      " bedrooms, " + baths + " bathrooms and the rent is " + rent);
               }
            }
        }
       else if (minbeds > bedrooms) {
           System.out.println("Apartment number " + aptNumber + " isn't suitable for your needs.");
       }
       else if (minbaths > baths) {
           System.out.println("Apartment number " + aptNumber + " isn't suitable for your needs.");
       }
       else if (maxrent < rent) {
           System.out.println("Apartment number " + aptNumber + " isn't suitable for your needs.");
       }
   }    
}





public class ApartmentProperties
{
   public static void main(String[] args)
   {    
      Apartment first = new Apartment(1);
      Apartment second = new Apartment(2, 2);
      Apartment third = new Apartment(3, 3, 2, 400);
      Apartment fourth = new Apartment(4, 1, 1, 250);
      Apartment fifth = new Apartment(5, 1, 1, 200);    

      first.display();
      second.display();
      third.display();
      fourth.display();
      fifth.display();
   }
}

1 Ответ

0 голосов
/ 25 апреля 2020

Попробуйте этот код. Я переместил метод отображения из класса Apartment в класс ApartmentProperties, сделал его stati c и выставил список квартир в аргументы.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Apartment {
    private int aptNumber;
    private int bedrooms;
    private int baths;
    private double rent;

    public int getAptNumber() {
        return aptNumber;
    }

    public int getBedrooms() {
        return bedrooms;
    }

    public int getBaths() {
        return baths;
    }

    public double getRent() {
        return rent;
    }

    public Apartment(int num, int bed, int bath, double ren) {
        aptNumber = num;
        bedrooms = bed;
        baths = bath;
        rent = ren;
    }

    public Apartment(int num, int bed, int bath) {
        this(num, bed, bath, 300);
    }

    public Apartment(int num, int bed) {
        this(num, bed, 2);
    }

    public Apartment(int num) {
        this(num, 2);
    }
}

public class ApartmentProperties {
    public static void display(List<Apartment> apartmentList) {
        int minbeds;
        int minbaths;
        double maxrent;

        Scanner input = new Scanner(System.in);
        System.out.print("Please enter: least amount of bedrooms >> ");
        minbeds = input.nextInt();
        System.out.print("Please enter: least amount of bathrooms >> ");
        minbaths = input.nextInt();
        System.out.print("Please enter: maximum amount of rent >> ");
        maxrent = input.nextDouble();

        boolean apartmentIsFound = false;
        for (Apartment apartment : apartmentList) {
            if (minbeds <= apartment.getBedrooms() && minbaths <= apartment.getBaths()
                    && maxrent >= apartment.getRent()) {
                System.out.println("Apartment number " + apartment.getAptNumber() + " has " + apartment.getBedrooms() +
                        " bedrooms, " + apartment.getBaths() + " bathrooms and the rent is " + apartment.getRent());
                apartmentIsFound = true;
            }
        }
        if (apartmentIsFound == false) {
            System.out.println("There are no apartments with those requirements");
        }
    }

    public static void main(String[] args) {
        Apartment first = new Apartment(1);
        Apartment second = new Apartment(2, 2);
        Apartment third = new Apartment(3, 3, 2, 400);
        Apartment fourth = new Apartment(4, 1, 1, 250);
        Apartment fifth = new Apartment(5, 1, 1, 200);

        List<Apartment> apartmentList = new ArrayList<Apartment>();
        apartmentList.add(first);
        apartmentList.add(second);
        apartmentList.add(third);
        apartmentList.add(fourth);
        apartmentList.add(fifth);

        display(apartmentList);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...