2013-12-07 5 views
0

я следующие классы в проекте:Как создать банковский счет с пользовательским вводом?

  • счета
  • Заказчик
  • Имя: Fname и LName (оба строковых полей)
  • Дата: год, месяц, день (все являются ИНТ поля)
  • Bank: содержит набор счетов
  • InputReader: считывает ввод с клавиатуры

Объекту Account требуется объект Customer и начальный баланс. Объекту Customer требуется объект Name и объект Date. Объект имени требует строк для фамилий и фамилий Мне нужно спросить у пользователя о деталях для создания объектов Name и Date, а также начального баланса.

Мне нужно создать новую учетную запись, получив соответствующую информацию от пользователя, то есть она попросит пользователя ввести имя пользователя, дату рождения и т. Д. Он читает ответы пользователя, создает учетную запись и добавляет ее в банк.

Я продолжаю получать сообщение об ошибке «java.lang.NullPointerException» при запуске метода public void createNewAccount(). Поблагодарили бы за любую помощь. Заранее спасибо.

Ниже приведен мой исходный код для класса Банка.

import java.util.ArrayList; 

public class Bank 
{ 
    public static final double INTEREST_RATE = 0.012;//1.2% 
    // instance variables - replace the example below with your own 
    private ArrayList<Account> accounts; 
    private InputReader reader; 
    private Name fullName; 
    private Date dateOfBirth; 

    /** 
    * Constructor for objects of class Bank 
    */ 
    public Bank() 
    { 
     // initialise instance variables 

    } 

    /* 
    * Adds an existing Account to the bank 
    * @param account 
    */ 
    public void addAccount(Account account) 
    { 
     accounts.add(account); 
    } 

     public void createNewAccount() { 

     System.out.println("Please enter your first name: "); 
     String firstName = reader.readString(); 

     System.out.println("Hello " + firstName + ". " + "What is your last name?"); 
     String lastName = reader.readString(); 
     System.out.println("Your last name is " + lastName); 


     System.out.println("Please enter your year of birth: "); 
     int thisYear = reader.readInt(); 

     System.out.println("Please enter your month of birth: "); 
     int thisMonth = reader.readInt(); 

     System.out.println("Please enter your date of birth: "); 
     int thisDay = reader.readInt(); 

     Name theName = new Name(firstName, lastName); 
     Date theDateOfBirth = new Date(thisYear, thisMonth, thisDay); 

    } 


} 
+2

'reader' используется перед инициализацией. Сначала запустите часть инициализации вашего кода. – 4J41

ответ

0

Вы можете изменить считыватель со сканером. Что-то вроде того.

Scanner scan = new Scanner(System.in); 
    System.out.println("Please enter your first name: "); 
    String firstName = scan.next(); 

    System.out.println("Hello " + firstName + ". " + "What is your last name?"); 
    String lastName = scan.next(); 
    System.out.println("Your last name is " + lastName); 


    System.out.println("Please enter your year of birth: "); 
    int thisYear = scan.nextInt(); 

    System.out.println("Please enter your month of birth: "); 
    int thisMonth = scan.nextInt(); 

    System.out.println("Please enter your date of birth: "); 
    int thisDay = scan.nextInt(); 

    //Then do what you are supposed to do...... 
+0

благодарит за информацию! Я попробовал другой метод, который работает, но у вас тоже есть смысл. – user3078337

1

Необходимо выполнить инициализацию считывателя, прежде чем вы сможете попытаться прочитать его.

+0

благодарит за быстрый ответ! – user3078337

0
Scanner scanner = new Scanner(System.in); 

The scanner object has a lot of functions you can use; 
0

Ваш считыватель InputReader объявлен, но не инициализирован, следовательно, NullPointerExceptin. Изменение его чаще используется:

Scanner scanner = new Scanner(System.in); 

Затем вы можете использовать его методы для ввода данных пользователем:

scanner.nextLine() for strings 

scanner.nextInt() for ints 

scanner.nextDouble() for doubles 

т.д.

Проверьте документы here.

0

Вам необходимо инициализировать переменные экземпляра:

public class Bank 
{ 
    public static final double INTEREST_RATE = 0.012; 

    private ArrayList<Account> accounts; 
    private InputReader reader; 
    private Name fullName; 
    private Date dateOfBirth; 

    public Bank() 
    { 
     // initialise instance variables <- where it says to 
     accounts = new ArrayList<Account>(); 
     reader = new InputReader(); 
     ... 
    } 

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

+0

Спасибо за помощь. Теперь это работает! :) – user3078337

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