логическое назначение внутри метода локальной переменной или нет? - PullRequest
0 голосов
/ 03 октября 2018
  1. Мне не совсем понятно, как мы используем логическое значение внутри метода и как установить его в ложь.Обычно, если вы используете переменную внутри метода, вы присваиваете ее локальной переменной, делаете ли вы то же самое для логических значений или просто используете и изменяете их.

  2. почему мы назначаем локальную переменную для атрибута кстати?что произойдет, если мы этого не сделаем?

  3. Как использовать установщик для логического значения?

  4. Как теперь уменьшить размерarraylist после того, как кто-то заимствует книгу?

    public class Governance{
                    ArrayList<Intenger> Books=new ArrayList<Integer>(10);
                    private boolean active = true;


            public void borrowBook{
 /** does I assign active to a local variable? why do we assign attributes  
 to a local variable? what happens if we  dont?why I cant just use and 
 initialize (e.g. set a value) the  attribute as a I defined(best practices)**//
    boolean checkStatus = isActive(); //correct?

            if(Books.isEmpty()){
            //how to I set active to false (best practices)
            checkStatus = myFunction(); //correct or are there better ways to do it?
            }
                else if(!Books.isEmpty() && isActive){
                    System.out.println("You can borrow that book");

                else{
                System.out.println("You can not borrow that book");
                }


         }

            public static boolean myFunction(){
                return false;
            }

            public boolean isActive() {
                return active;
            }

            //what is a case where I use this and how?
            public void setActive(boolean active) {
            this.active = active;
            }

        }

1 Ответ

0 голосов
/ 03 октября 2018
  1. A boolean - это примитивный тип данных.Вы можете назначить его как другие примитивы: boolean active = true; active = false;
    Его также можно сравнить active == true
    Использовать как условие if(active) { // do stuff } Нет необходимости active == true
  2. active вкласс Governance имеет область действия, охватывающую весь класс.
    Если какой-то другой класс хочет изменить его значение, необходимо будет вызвать yourGovernanceInstance.setActive(false);, поэтому мы изменим свойство active этого экземпляра класса на false.
  3. См. Пример выше.

Я изо всех сил пытаюсь поделиться кодом, используя средство форматирования, см. эту ссылку , чтобы получить аккуратную версию.Ниже, только если срок действия целевой ссылки истекает.

import java.util.ArrayList;
import java.util.List;
import java.lang.Integer;

public class Governance {
  // usually we write variables in lower case.
  private List<Integer> books = new ArrayList<Integer>();
  // private member. To change it's value it's best practice to call setters and getters to change the value.
  private boolean active = true;

  public void borrowBook() {
    if(books.isEmpty()){
    // I use "this" to refer to this class's method "isActive()"
    } else if(!books.isEmpty() && this.isActive()){
      System.out.println("You can borrow that book");
    } else {
      System.out.println("You can not borrow that book");
    }
  }

  public boolean isActive() {
    return active;
  }

  // You habe a class that has many Governance instances, e.g.
  // Governance myGov = new Governance();
  // myGov is no more active, so you call: myGov.setActive(false);
  public void setActive(boolean active) {
    this.active = active;
  }
}            

Вы также можете просто использовать else if(!books.isEmpty() && active).

Зависит.Обычно вы ArrayList содержат Book объектов в вашем контексте.Вам нужно будет идентифицировать книгу, которую кто-то хочет взять.

public class Book {private int id;частное название строки;частный логический активный;

public Book(int id, String title, boolean active) {
    this.id = id;
    this.title = title;
    this.active = active;
}

// Setters and Getters

}

А в вашем Governance классе:

  public boolean canBorrowBookWithId(int id) {
      Book bookToBeBorrowed = books.get(id);
      boolean canBorrow = true;
      // If book can is active, it can't be borrowed.
      if(bookToBeBorrowed.IsActive()){
        canBorrow = false;
      } else {
        // If not; set it to be and lend it out :-)  
        bookToBeBorrowed.setActive(true);
      }
      return canBorrow;
  }

Примечание: canBorrowBookWithId() проверяет, доступна ли книга, и устанавливает ее состояние.По методу чистого кода метод будет выполнять только одну из этих операций за один раз!

Вы пытаетесь выучить Object oriented programming, трудно начать, но в конце концов вы поймете это:-)

...