2016-12-09 3 views
0

Я создал программу, которая создает 10 базовых учетных записей с идентификатором, состоящим из четырех цифр и балансом по умолчанию 100. Я пытаюсь создать дополнительные учетные записи (проверки учетных записей) с большим количеством ограничений/Дополнительная информация. Чтобы получить доступ к учетным записям, вы должны ввести свой идентификатор, который отображается в списке всех возможных идентификаторов (во избежание угадывания id). Моя проблема в том, что я создал 10 объектов Checkingaccount с моими начальными 10 стандартными объектами учетной записи моя программа не будет назначать случайный четырехзначный идентификатор для обоих объектов. Учетные записи объектов получают идентификаторы, но если вы запустите программу, объекты Checkingaccount не получат идентификаторы. Почему?Предоставление случайных чисел объекту в отдельном классе

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

import java.util.Scanner; 
import java.util.Random; 
public class Chapter10_7 { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    CheckingAccount[] Checkingaccount = new CheckingAccount[10];//create ten CHECKING ACCOUNT objects 
    account[] accounts = new account[10];//create ten accounts objects 

    for (int i = 0; i < accounts.length; i++) { 
     Random r = new Random(); 
     int ID = +((int)(Math.random()*9000)+1000);//ID is 4 digit number 
     accounts[i] = new account(ID, 100); //assign random 4 digit ID to accounts[1-10] 
     System.out.println(ID); 
    } 
    System.out.println("\n--Checking Accounts--\n"); 
    for (int i = 0; i < Checkingaccount.length; i++) { 
     Random r = new Random(); 
     int ID = +((int)(Math.random()*9000)+1000);//ID is 4 digit number 
     Checkingaccount[i] = new CheckingAccount(ID, 100); //assign random 4 digit ID to CHECKING ACCOUNT[1-10] 
     System.out.println(ID); 
    } 


boolean hasRan = false; 
int q = 0; 
int a = q; 
int userID = 0; 
int accountID = 0; 
int CheckingaccountID = 0; 
int z = 0; 

while(z != 4){//run until user enters 4 


    while(hasRan == false){//runs once and never again unless its incorrect ID 
    System.out.println("Enter Account ID"); 
    userID = input.nextInt(); 

    for(a = 0; a < accounts.length; a++){ 
     accountID = accounts[a].getId(); //accountID gets accounts[a] ID variable and stores it(4 digit ID).getId 
     CheckingaccountID = Checkingaccount[a].getId(); 
     if(userID == accountID){//if your input of ID equals an accounts pin(any of them) it allows access 
      System.out.println("Welcome"); 
      hasRan = true;//stops it from looping 
      break; 
     }if(userID == CheckingaccountID){//if your input of ID equals a Checking Account pin(any of them) it allows access 
      System.out.println("Welcome"); 
      hasRan = true;//stops it from looping 
      break; 
     }else if(userID != accountID){ 
      hasRan = true;//loop if you entered incorrect pin 

     } 

    } 
} 

if(userID == accountID){// if ID matches an existing accounts ID then access 



System.out.println("\n1:Check Balance\n2:Deposit\n3:Withdraw\n4:Exit"); 
int x = input.nextInt(); 

//accounts[a] is the account array,1-10 since we have 10 accounts. 

      if (x == 1){ 
      System.out.println("Your Balance Is: " + accounts[a].getBalance()); 
      accounts[a].getBalance(); 

      }else if (x == 2){ 
      System.out.println("How Much Would You Like To Deposit?"); 
      int newDeposit = input.nextInt(); 
      accounts[a].deposit(newDeposit); 
      System.out.println("Your Total Is: "+ accounts[a].getBalance()); 

      }else if(x == 3){ 
       System.out.println("How Much Would You Like To Withdraw?"); 
       int newWithdraw = input.nextInt(); 
       accounts[a].withdraw(newWithdraw); 
       System.out.println("Your Total Is: "+  accounts[a].getBalance()); 
       }else break; 

      }else{ 
       hasRan = false;// allows ID check to run again 
     } 
    } 
} 

} 

-Это класс, который я создал, чтобы использовать только 10 базовых объектов «учетных записей».

class account{ 

private int id = 0; 
private double balance = 100; 

public account(int newId , double newBalance){ 
     id = newId; 
     balance = newBalance; 

} 

public double getBalance() { 
    return balance; 
} 

public void setBalance(double newBalance) { 
    balance = newBalance; 
} 

public int getId() { 
    return id; 
} 

public void setId(int newId) { 
    id = newId; 
} 


public double deposit(double newDeposit){ 
    balance = balance + newDeposit; 
    return newDeposit; 
} 

public double withdraw(double newWithdraw){ 
    balance = balance - newWithdraw; 
    return newWithdraw; 
} 


@Override 
public String toString() { 
    return "\r\n"+"Account ID: " + id + "\r\n" + "Balance: " + balance + "\r\n" ; 
} 

} 

-I попытался сделать Проверка Accounts работы в отдельном классе со счетов

import java.util.Random; 

public class CheckingAccount { 

private double balance; 
private int id; 

public CheckingAccount(int newId , double newBalance){ 

} 

public double getBalance() { 
    return balance; 
} 

public void setBalance(double balance) { 
    this.balance = balance; 
} 

public int getId() { 

    return id; 
} 

public void setID(int newId){ 
    id = newId; 

} 

}

+0

btw, используйте соглашение об именах java, в котором говорится, что классы должны начинаться с заглавных букв – nomadus

ответ

0

Ваш вопроссчета получает ID в порядке, но если вы запустите программу CheckingAccount объекты не получают ID's.Почему?

Вы создаете объект как

new CheckingAccount(ID, 100); 

но ваш конструктор не так и не спасает переданные значения

Вы должны изменить его

public CheckingAccount(int newId , double newBalance){ 
    this.id = newId; 
    balance = newBalance; 
} 

Кроме того, почему вы экземпляры

Random r = new Random(); 

, когда вы никогда не используете его.

+0

Lol u получил это первым, ха-ха. В дополнение к ответу, когда вы проверяете свой идентификатор набора на учетных записях, вы должны распечатать ** фактический ** id: 'System.out.println (accounts [i] .getId());'. не 'System.out.println (ID);'. Таким образом, я легко справляюсь с проблемой конструктора! – Thrasher

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