2015-10-28 3 views
0
import java.util.ArrayList; 

public class Lan{ 
    private ArrayList<Member> members; 

    public Lan() 
    { 
     members = new ArrayList<Member>(); 
    } 

    public void addMember(Member newMember){ 
     if(newMember.getBalance() >= 200) 
     { 
      this.members.add(newMember); 
     } 
     else 
     { 
      System.out.println("You dont have enough money to enter"); 
     } 
    } 

    public void printMembers(){ 
     System.out.println("People attending"); 
     for(Member member : members) 
     { 
      System.out.println(member); 
     } 

    } 
} 

public class Member{ 
    private String name; 
    private String alias; 
    private int balance; 

    public Member(String fullName, String nickname){ 
     this.name = fullName; 
     this.alias = nickname; 
     this.balance = 0; 
    } 

    public void setBalance(int account) 
    { 
     if(account > 0) 
     { 
      balance = balance + account; 
     } 
     else 
     { 
      System.out.println("You have not entered a valid number"); 
     } 
    } 

    public String getName() 
    { 
     return name; 
    } 
    public String getAlias() 
    { 
     return alias; 
    } 

    public int getBalance() 
    { 
     return balance; 
    } 

    @Override 
    public String toString() { 
     return "Name: " + this.name + "/Alias: " + this.alias; 
    } 
} 

Это мои занятия, Lan и Member, и эти члены, чтобы войти в Lan они должны иметь 200 на их балансе. Все работает, но я не могу понять, как сделать (Balance - 200) < - ввести цену, когда они добавляются в массив Lan. Я делаю это в заявлении if в Lan? или мне нужно создать новое поле под названием cost?Java BlueJ если оператор

+0

Вам необходимо создать метод для члена, который может фактически уменьшить весы, при этом он может только увеличить баланс. Как только у вас будет этот метод, я бы назвал его, чтобы уменьшить баланс на 200, после проверки того, что у члена есть достаточно высокий баланс, но до добавления члена в Lan. –

+0

Нравится? public void removeBalance (int take) { this.withdraw = остаток - снять; } – pikkstup

+0

'this.balance = balance - withdraw' –

ответ

0

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

public void addMember(Member newMember){ 
      if(newMember.getBalance() >= 200) 
      { 
       this.members.add(newMember); 
newMember.setBalance(newMember.getBalance()-200); 
      } 
      else 
      { 
       System.out.println("You dont have enough money to enter"); 
      } 
     } 
+0

Я не получаю синтаксическую ошибку, но когда я вхожу в элемент в lan, он приходит «вы не ввели действительное число», которое из оператора member if, но он добавляется в массив Lan, а его баланс по-прежнему равен 200. Что делать, если сделанный поле с билетной ценой в классе Lan? вы думаете, что это сработает, и как это будет работать? – pikkstup

+0

Рассмотрите возможность размещения тестового кода, потому что из кода, который я вижу, ошибок не возникает. Создание публичной статической конечной переменной, называемой TICKET_PRICE в классе Lan, никоим образом не поможет вашей причине, кроме возможности легко изменить цену билета. – Bimde

Смежные вопросы