2013-12-18 2 views
0

Я немного застрял на этом. Я пишу Java-программу с двумя классами, а затем тестовую программу для тестирования методов в классе. Я застрял в вызове двух методов ниже в основном методе. Все файлы класс (класс тестовых программ и два других классов) компиляция и IDE не дают мне никаких сообщений об ошибках, то расчет просто не происходит ...вызов методов из классов в основном методе

--Main Метод Кода:

//Call debit method 
System.out.println("Please enter amount to be debited"); 
double amount=input.nextDouble(); 
account.debit(amount); 
System.out.printf("%.2f%n",balance); 

//Call credit method 
System.out.println("Please enter amount to be credited"); 
amount=input.nextDouble(); 
account.credit(amount); 
System.out.printf("%.2f%n",balance);  

--Account Код класса:

//Method for crediting account balance 
public void credit (double amount) { 
    double newBalance=this.balance+amount; 
    this.setBalance(newBalance); 
} 

//Method for debiting account balance 
public void debit (double amount) { 
    if (amount<balance) { 
    double newBalance=this.balance-amount; 
    this.setBalance(newBalance); 
    } else { 
    System.out.println("Insufficient Funds!"); 
} 

ПРИМЕЧАНИЕ: сеттер баланс работает, как это называется в начале тестовой программы ...

Любая помощь очень признателен d !!!

Полный код для класса Account:

public class Account { 
private int accountId; 
private String accountName; 
private String accountAddress; 
private double balance; 
private Bank bank; 

//Default Constructor 
public Account() { 
} 

//Getters 
public int getAccountId() { 
    return accountId; 
} 

public String getAccountName() { 
    return accountName; 
} 

public String getAccountAddress() { 
    return accountAddress; 
} 

public double getBalance() { 
    return balance; 
} 

public Bank getBank() { 
    return bank; 
} 

//Setters 
public void setAccountId (int accountId) { 
    if (accountId <=10000000 || accountId >=99999999) { 
    System.out.println("Invalid Account Id"); 
    } else { 
    this.accountId=accountId; 
    } 
} 

public void setAccountName (String accountName) { 
    if (accountName.length()>=10) { 
    System.out.println("Too Long"); 
    } else { 
    this.accountName=accountName; 
    } 
} 

public void setAccountAddress (String accountAddress) { 
    this.accountAddress=accountAddress; 
} 

public void setBalance (double balance) { 
    if (balance<0.0) { 
    System.out.println("Invalid Balance"); 
    } else { 
    this.balance=balance; 
    } 
} 

public void setBank (Bank bank) { 
    this.bank=bank; 
} 

//Constructor to initialize accountId, accountName, accountAddress and Bank 
public Account (int accountId, String accountName, String accountAddress, Bank bank) { 
    this.setAccountId(accountId); 
    this.setAccountName(accountName); 
    this.setAccountAddress(accountAddress); 
    this.setBank(bank); 
} 

//Method to print out account category based on balance 
public void printAccountCategory() { 
    if (balance<100.0) { 
    System.out.println("Challenged Account"); 
    } else if (balance>=100.0 && balance<999.9) { 
    System.out.println("Standard Account"); 
    } else if (balance>=1000.0 && balance<9999.9) { 
    System.out.println("Promising Account"); 
    } else if (balance>=10000.0 && balance<99999.9) { 
    System.out.println("Gold Star Account"); 
    } else { 
    System.out.println("Super Duper Account"); 
    } 
} 

//Method to project balance based on compound interest and the number of years required 
//Note: I took the formula using n (number of times the interest is compounded per year) as 1 
public double projectNewBalance (int numberYears) { 
    if (numberYears>0) { 
    double interest=1; 
    for (int i=1; i<=numberYears; i++) { 
     interest*=(1.0+bank.getInterestRate()); 
    } 
     double newBalance=balance*interest; 
     return newBalance; 
    } else if (numberYears<0) { 
     System.out.println("Invalid Value"); 
    } else { 
     return balance; 
    } 
    return balance; 
    } 

    //Method for crediting account balance 
    public void credit (double amount) { 
    double newBalance=this.balance+amount; 
    this.setBalance(newBalance); 
    } 

    //Method for debiting account balance 
    public void debit (double amount) { 
    if (amount<balance) { 
     double newBalance=this.balance-amount; 
     this.setBalance(newBalance); 
    } else { 
     System.out.println("Insufficient Funds!"); 
    } 
    } 

    //toString method 
    public String toString() { 
    return "Account Id: "+accountId+", Account Name: " + accountName + ", Account Address: "+accountAddress+", Balance: "+balance+", Bank Details: "+bank.toString()+"."; 
    } 
} 

Основной метод Полный код:

import java.util.Scanner; 

public class BankAccountTest { 
    public static void main (String [ ] args) { 
    //Create an instance of the Bank class 
    Bank bank = new Bank ("WIT Bank", "Paddy Snow", 0.045); 

    //Create instance of Scanner class 
    Scanner input=new Scanner(System.in); 

    //Prompt user to input data to create an account 
    System.out.println("Please enter an Account ID"); 
    int accountId=input.nextInt(); 

    System.out.println("Please enter an Account Name"); 
    String accountName=input.next(); 

    System.out.println("Please enter an Account Address"); 
    String accountAddress=input.next(); 

    //Create instance of the Account class 
    Account account = new Account (accountId, accountName, accountAddress, bank); 

    //Print out details of account class 
    System.out.println(account); 

    //Prompt user to enter balance for the account 
    System.out.println("Please enter account balance"); 
    double balance=input.nextDouble(); 
    account.setBalance(balance); 

    //Use printAccountCategory method 
    account.printAccountCategory(); 

    //Call projectNewBalance method 
    // Note: Method tested with value of 10 years as mentioned in spec, 
    // but user input also included I think it is more appropriate for the functionality of the program 
// int numberYears=10; 
// double newBalance1=account.projectNewBalance(numberYears); 
// System.out.println(""+newBalance1); 
    System.out.println("Please enter number of years"); 
    int numberYears=input.nextInt(); 
    double newBalance=account.projectNewBalance(numberYears); 
    System.out.printf("%.2f%n",newBalance); 

    //Call debit method 
    System.out.println("Please enter amount to be debited"); 
    double amount=input.nextDouble(); 
    account.debit(amount); 
    System.out.printf("%.2f%n",balance); 

    //Call credit method 
    System.out.println("Please enter amount to be credited"); 
    amount=input.nextDouble(); 
    account.credit(amount); 
    System.out.printf("%.2f%n",balance);  
    } 
} 
+1

Где вы создаете класс 'Account' в основном? Когда вы распечатываете 'balance', вы, вероятно, должны сначала обновить его значение из объекта' account'. Вы должны показать полный исходный код для своих классов. –

+0

, пожалуйста, покажите полный пример. Кроме того, вы программируете OO или процедурные? Если во-вторых, тогда вы должны объявить все как статичное. Я предлагаю начать c & p все в одном (классе) файле и выполнить быстрый тест. –

ответ

1

Ваши номера всегда может выглядеть так же, потому что локальная переменная не обновляется перед печатью его.

Перед тем как позвонить по телефону System.out.printf("%.2f%n",balance);, необходимо уточнить значение balance.

Что-то вроде:

balance = account.getBalance();

+0

попробует это сейчас, спасибо – user3068335

+0

работал отлично, спасибо! Знал, это было бы что-то глупое !!! – user3068335

1

Не должно быть печать баланса объекта, который вы создали, а не просто "баланс": System.out.println (account.getBalance()) ?

+0

попробует это сейчас, спасибо – user3068335

+0

работал отлично, спасибо! Знал, это было бы что-то глупое !!! – user3068335

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